我把客户代码存储在一个表中。客户代码存储为:

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中的REGEXPLIMIT 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/

10-10 06:23