MySQL如何检查值是否以字母开头和以数字结尾?

时间:2019-06-28 22:03:10

标签: mysql sql database

我想显示仅在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]$'

2 个答案:

答案 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)

您应该使用REGEXPWHERE 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]$'