匹配 table 值中第一个字符匹配查询的位置

Match where first characters in table value match query

我希望能够在 table 中进行搜索,其中有时 table 有全名,但有时只有首字母。我可以在首字母后面放任何字符,下面显示一个*。

姓名 信息
一个*
鲍勃
麦克

如果我搜索 Andrew,我希望能够 return A*,因为这是可能的。我正在尝试类似的方法,但它不起作用。

SELECT name, info FROM table WHERE
IF( RIGHT(name,1)="*" , CONCAT(LEFT(name,1) , "%") , name )
LIKE 'Andrew';

有人可以帮忙吗?

您的想法是正确的,但是您将 like 运算符的操作数颠倒了。通配符应该在右边的运算符上:

SELECT * 
FROM   mytable
WHERE  'Andrew' LIKE IF( RIGHT(name,1) = '*', CONCAT(LEFT(name, 1), '%'), name)

您可以将 * 替换为 % 并使用 like:

where 'Andrew' like replace(name, '*', '%')