1

有一个 MySQL 表,内容如下:

id mask
1  abcd
2  vdskfw
...
212421 dijhaihwfaw

我有一个传入字符串,例如abcd efghijkl,我需要检查它是否以表中的任何匹配项开头。我可以通过多个查询来做到这一点:

SELECT * FROM table WHERE mask = 'abcdefghijkl';

如果不匹配:

SELECT * FROM table WHERE mask = 'abcdefghijk';
SELECT * FROM table WHERE mask = 'abcdefghij';
SELECT * FROM table WHERE mask = 'abcdefghi';

...等等。

但也许有更好的方法来解决这个问题?

4

1 回答 1

1

这些中的任何一个都可以满足您的要求。

SELECT * FROM table
WHERE locate(mask, 'abcdefghijkl') = 1;

或者

SELECT * FROM table
WHERE 'abcdefghijkl' rlike concat('^', mask)

或者

SELECT * FROM table
WHERE 'abcdefghijkl' like concat(mask, '%')

演示

于 2012-12-14T17:06:03.720 回答