我想显示仅在cansas市中所有值都以字母开头和以数字结尾的特定数据。
我的桌子长什么样:
酒店房间
pID |name | city | key
--------------------------------------------
543 |H. Stein |Cansas | 16Z004
542 |Z. Francis |Cansas | Z10-30
642 |Q. Snake |Cansas | Z10-25
645 |P. Brown |Kentucky | Z10-40
我想要什么:
pID |name | city | key
--------------------------------------------
542 |Z. Francis |Cansas | Z10-30
642 |Q. Snake |Cansas | Z10-25
我尝试过但没有奏效的东西:
SELECT * FROM hotelroom
WHERE city LIKE '%Cansas%' AND
key LIKE '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ].*[0123456789]$'
答案 0 :(得分:0)
您应该使用RLIKE
而不是LIKE
SELECT * FROM hotelroom
WHERE city LIKE '%Cansas%' AND
key RLIKE '^[a-zA-z].*[0-9]$'
您可以在这里找到文档:https://dev.mysql.com/doc/refman/8.0/en/regexp.html#operator_regexp
答案 1 :(得分:0)
您应该使用REGEXP,WHERE fields REGEXP regex_string
。另外,您不必写所有字母,可以像[a-zA-Z]
那样写。
具体来说:范围是一系列连续的字符,从低 ASCII字符集中设置为高。[101]例如,[z-a]不是 范围,因为它是向后的。范围[A-z]与两个大写都匹配 和小写字母,但它也与六个字符匹配 介于ASCII图表中的大写和小写字母之间:[,\, ],^,_和'。
https://docstore.mik.ua/orelly/unix3/upt/ch32_08.htm
SELECT * FROM hotelroom
WHERE city LIKE '%Cansas%' AND
key REGEXP '^[a-zA-Z].*[0-9]$'
还
我想显示所有值以字母开头的特定数据 并且仅以坎萨斯市中的数字结尾。
如果您只想从Cansas市获取结果,则不必使用LIKE
。如果您使用的是LIKE
,它还将匹配Cansas2
城市或任何以Cansas
作为其子字符串的东西。
您可以只使用equals (=) operator。
SELECT * FROM hotelroom
WHERE city = 'Cansas' AND
key REGEXP '^[a-zA-Z].*[0-9]$'