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

最佳答案

您应该使用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市中的数字结尾。


如果只想从Cansas市获取结果,则不必使用LIKE。如果您使用的是LIKE,它还将匹配Cansas2城市或任何以Cansas作为其子字符串的东西。

您可以只使用equals (=) operator

SELECT * FROM hotelroom
WHERE city = 'Cansas' AND
key REGEXP '^[a-zA-Z].*[0-9]$'

10-04 11:52
查看更多