如何查询表以查找列中没有数字的行

时间:2014-06-17 21:12:42

标签: sql sql-server

我的列中包含characters

中的数字和SQL Server 2005

注意:此处character表示除数字以外的任何内容。

我需要列出所有包含字符的记录(数字除外)。如果记录中没有数字,以下查询将列出记录。但我需要列出所有包含字符的记录,无论它是否有数字。

如何修改此查询以返回所有包含atlesat一个字符的记录?

参考

  1. How would I determine if a varchar field in SQL contains any numeric characters?
  2. SQL query for finding rows with special characters only
  3. CODE

    DECLARE @WorkOrderHistory TABLE (WorkOrder VARCHAR(10))
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('123456') --EXCLUDE from result
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('abvc@@@') --Need to list in result
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('a+bvc1234') --Need to list in result
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('++') --Need to list in result
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('$1') --Need to list in result
    INSERT INTO @WorkOrderHistory (WorkOrder) VALUES ('1.2')  --Need to list in result
    
    --Any record without a number
    SELECT TOP 10 *
    FROM @WorkOrderHistory WO  
    WHERE WO.WorkOrder NOT like '%[0-9]%'
    

3 个答案:

答案 0 :(得分:2)

[]括号内的克拉(^)表示匹配除列表中的字符以外的任何字符。因此,如果要匹配除0-9之外的任何字符,则使用[^ 0-9]并且LIKE(不带NOT)将匹配所有其他字符。

这应该有效:

SELECT TOP 10 *
FROM @WorkOrderHistory WO  
WHERE WO.WorkOrder LIKE '%[^0-9]%'

当然,您将匹配所有标点符号和不可打印的字符。

通过http://technet.microsoft.com/en-us/library/ms174214(v=sql.110).aspx

答案 1 :(得分:0)

从销售中选择* 其中name不像'%[0-9]%'

答案 2 :(得分:-1)

使用IsNumeric

SELECT * FROM (
    Select isNumeric(workorders) as isNumber,WorkOrder from table @workorderhistory) AS BOB
WHERE BOB.isNumber = 0