我是MySQL的初学者,我试图编写一个查询,通过if语句查找一个字符串是否包含列中的子字符串,
例如,我在表中有一个带有字符串值的列
这是字符串的一个例子
通过查询,将尝试检查“--这是字符串的示例”是否包含--这是--然后它可能返回yes/1
或no/0
,因为不包含--这是
从表中选择位置(“这是”在column1中)作为结果;
但我不知道如何在MySQL查询中使用if语句编写
有人能帮我吗?请让我知道这是否正确的方式和可能通过MySQL查询?
发布于 2021-04-28 06:33:10
您的查询是正确的,除非必须使用逗号而不是IN
关键字。
SELECT POSITION('this is', column1) AS result FROM table;
另外,您可以使用的不是POSITION
,而是LOCATE
函数(它们是注释中提到的别名)。
SELECT LOCATE('this is', column1) AS result FROM table;
或INSTR()函数(在本例中,您必须使用sswap操作数)
SELECT INSTR(column1, 'this is') AS result FROM table;
如果找到子字符串,所有查询都返回正整数;如果没有找到子字符串,则返回零0
;如果任何操作数为空,则返回NULL。
如果您只想返回1/0
输出,那么必须检查获得了哪些变体,并将其转换为所需的值。例如,
SELECT CASE WHEN LOCATE('this is', column1)
THEN 1
ELSE 0
END AS result FROM table;
当找到子字符串时,LOCATE('this is', column1)
被视为真返回1,否则为FALSE返回0。
注意--如果您使用区分大小写的排序规则,那么'this is'
子字符串将在'This is an example of String'
值中找到而不是!
如果您需要应用不区分大小写的搜索,那么可以显式地指定不区分大小写的排序规则,或者应用一个函数将所有符号转换为小写或大写(当然,在这种情况下不需要文字,它们可以在需要的情况下打印)。例如,
SELECT LOCATE('this is', LOWER(column1)) AS result FROM table;
https://stackoverflow.com/questions/67294594
复制相似问题