【发布时间】:2011-10-16 23:27:21
【问题描述】:
我有一个由单词组成的字符串数组(例如 { alpha, beta, gamma } )和一个用单词填充的 MySQL 表。对于每个字符串数组,我提出了一个查询 MySQL 表的 SELECT 语句,以查看是否有任何匹配的单词。返回的行让我知道我的字符串数组中的单词何时是表中唯一的单词之一。然后我更改字符串数组中特定字符串的文本。为简单起见,假设我想在其上调用 .ToUpper()。
我目前的方法是从表中获取所有匹配的行,然后遍历字符串数组并检查返回的每一行是否与数组中的每个字符串匹配。这是非常低效的,我宁愿让我的 MySQL 查询返回的行有一个列,告诉我该单词来自字符串数组中的哪个位置。这样我就可以跳到那里并摆弄绳子。有没有办法给 where 语句中的每个“LIKE”子句一个唯一标识符,如果该特定的 like 子句是匹配的,则返回该标识符?任何想法将不胜感激。
我的选择语句是:
SELECT `WordText` FROM `Words` WHERE `WordText` LIKE 'alpha%' OR `WordText` LIKE 'gamma%';
我正在寻找的是这样的:
SELECT `WordText`, PositionInArray FROM `Words` WHERE `WordText` LIKE 'alpha%' (IF MATCH THEN PositionInArray=0 -- alpha's position in my array) OR `WordText` LIKE 'gamma%' (IF MATCH THEN PositionInArray=2 - gamma's position in my array);
当返回这一行时,我可以直接转到 WordArray[PositionInArray].ToUpper() 并知道那是匹配的单词。
非常感谢!
【问题讨论】:
标签: mysql sql if-statement where-clause string-matching