如何在SQL语句中使用LIKE查找后跟"_"字段内容中的字符?
示例:如何查找19_21或_?我知道_是一个保留通配符....但我需要在这里把它当作一个真实的角色来使用……谢谢! !
我有一个类表。每个类都有一个用户文本字段。文本字段看起来像这样(对于一条记录):
19 _m ~ 43 ~ 2 ~ 4米~ 45 ~ 0 ~ 0米~ 46 ~ 0 ~ 0米~ 47 ~ 0 ~ 0米~ 48 ~ 0 ~ 0米~ 49 ~ 0 ~ 0米~ 50 ~ 0 ~ 0米~ 51 ~ 0 ~ 0-t ~ 6 ~ 0 ~ 0-t ~ 7 ~ 8 0 ~ 0-t ~ ~ 0 ~ 0-t ~ 9 ~ 0 ~ 0米~ 52 ~ 0 ~ 0米~ 53 ~ 0 ~ 0米~ 54 ~ 0 0 ~ 0-t ~ ~ 0-t ~ 10 ~ 11 ~ 12 0 ~ 0-t ~ ~ 0 ~ 0-t ~ 13 ~ 0 ~ 0 | 21 _m ~ 43 ~ 0 ~ 0米~ 45 ~ 0 ~ 0米~ 46 ~ 0 ~ 0米~ 47 ~ 0 ~ 0米~ 48 ~ 0 ~ 0米~ 49 ~ 0 ~ 0米~ 50 ~ 0 ~ 0米~ 51 ~ 0 ~ 0-t ~ 6 ~ 0 ~ 0-t ~ 7 ~ 8 0 ~ 0-t ~ ~ 0 ~ 0-t ~ 9 ~ 0 ~ 0米~ 52 ~ 0 ~ 0米~ 53 ~ 0 ~ 0米~ 54 ~ 0 0 ~ 0-t ~ ~ 0-t ~ 10 ~ 11 ~ 12 0 ~ 0-t ~ ~ 0 ~ 0-t ~ 13 ~ 0 ~ 0
用户id是后面带_的数字。在这个例子中,19_21岁和_.
我想做的是
select * from the classes table where a certain user (number followed by _)
存在于这个USERS字段中。
我试过[…)准备
("SELECT * from classes WHERE USERI LIKE '".$id."\_%'")
却不给我这张唱片…它返回一个空结果。
如果您事先不知道下划线之前要查找的数字是什么,请使用REGEXP
示例:SELECT * FROM my_table WHERE field_whith_number REGEXP '^([0-9])+_';
REGEXP的简要说明:
^
匹配行起始
([0-9])+
匹配1个或多个号码
_
匹配单个下划线
请注意,对于非常大的表,这不是一个理想的解决方案,因为它会进行表扫描。
如果您正在使用SQL Server进行查询,则可以使用以下内容完成
...
WHERE USERS LIKE TheID + '#_' ESCAPE '#'
LIKE
之后的ESCAPE
指定一个转义字符,该转义字符可用于指定特殊字符作为字面量。
尝试使用反斜杠:
SELECT * from classes WHERE USERI LIKE '19_'