我把客户代码存储在一个表中。客户代码存储为:
CSC 1234
CSC 003E
CSC AAF8
etc.
我需要找到第一个只有数值的代码。
我用的是下面这句话:
SELECT TOP 1 *
FROM Customer
WHERE custcode LIKE 'CSC [1-9][1-9][1-9][1-9]'
ORDER BY custcode;
但结果是0。怎么了?
最佳答案
LIKE
用于通配符,而不是正则表达式。
这在文档中很清楚-为什么你不读呢?!
也许你是在追求
SELECT TOP 1 *
FROM Customer
WHERE custcode REGEXP 'CSC [1-9][1-9][1-9][1-9]'
ORDER BY custcode;
另外,我认为您的意思是MySQL中的
REGEXP
(LIMIT 1
来自于Microsoft SQL Server),我们可以压缩这个regex:SELECT *
FROM Customer
WHERE custcode REGEXP 'CSC [1-9]{4}'
ORDER BY custcode
LIMIT 1;
更新sllev很好地说明了您可能是指
TOP 1
而不是[0-9]
。适当地适应。(这是“查询”,不是“句子”。)
关于mysql - 如何定义此搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7064481/