我的列中包含characters
SQL Server 2005
注意:此处character
表示除数字以外的任何内容。
我需要列出所有包含字符的记录(数字除外)。如果记录中没有数字,以下查询将列出记录。但我需要列出所有包含字符的记录,无论它是否有数字。
如何修改此查询以返回所有包含atlesat一个字符的记录?
参考:
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]%'
答案 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)
SELECT * FROM (
Select isNumeric(workorders) as isNumber,WorkOrder from table @workorderhistory) AS BOB
WHERE BOB.isNumber = 0