好的,我在SQL Server的表中有一列。 每个记录都有一个字符串(即名称) 有些字符串有英文和非英文字符。
我必须只选择有英文和非英文字符的记录。
我该怎么做?
我的尝试...
Select * from Table
Where Nameofthecolumn NOT LIKE '%[A-Z]%'
Go
这会给我EMPTY表。
我确信至少有两条记录有英文和非英文字符。
我需要这两个记录作为输出。
我正在尝试
Select * from Table
Where Nameofthecolumn NOT LIKE '%[A-Z,a-z]%' AND Like '%[A-Z,a-z]%'
Go
但事实证明你可以使用布尔与喜欢/不喜欢。
请指导我正确的方向。
由于
答案 0 :(得分:1)
如何扭转您的搜索,例如找到任何与A-Z不匹配的东西:
... WHERE col LIKE '%[^A-Z]%' AND col LIKE '%[A-Z]%';
如果排序规则不区分大小写,则不需要a-z,如果区分大小写,则可以添加COLLATE子句。但是你可能想要过滤出预期的空格,数字和其他非字母数字。
答案 1 :(得分:0)
你的意思是这样吗?
select 1 as field1,'1' as field2 into #data
union all select 1,'abc'
union all select 2,'abc'
union all select 3,'999'
SELECT * FROM
(
select field1,field2
,MAX(CASE WHEN field2 NOT LIKE '%[A-Z,a-z]%' THEN 1 ELSE 0 END) OVER (PARTITION BY field1)
+ MAX(CASE WHEN field2 LIKE '%[A-Z,a-z]%' THEN 1 ELSE 0 END) OVER (PARTITION BY field1) as chars
FROM #data
) alias
WHERE chars =2