我的数据库中有一些nvachar
数据。
aaaa,bb1b,c + cc,1234,dser,5896
我需要选择两个Only String
和Only Int
。这是卑鄙的:
首次选择的结果为:aaaa
,dser
第二次选择的结果为:1234
,5896
如何?
答案 0 :(得分:3)
您可以使用LIKE
执行此比较。通过使用双阴性,您可以使用单个表达式执行测试:
declare @t table (val varchar(10) not null)
insert into @t(val)
select 'aaaa' union all
select 'bb1b' union all
select 'c+cc' union all
select '1234' union all
select 'dser' union all
select '5896'
select * from @t where val not like '%[^A-Z]%'
select * from @t where val not like '%[^0-9]%'
第一个select
说“给我所有字符串不包含非字母字符”。同样,第二个说“给我所有不包含非数字”的字符串
答案 1 :(得分:2)
您需要检查正则表达式。
在您的示例中,查询将如下所示:
SELECT * FROM example WHERE foo LIKE '%[0-9]%' AND foo NOT LIKE '%[A-Z]%'
和
SELECT * FROM example WHERE foo NOT LIKE '%[0-9]%' AND foo LIKE '%[A-Z]%'
对于不区分大小写的检查,可能必须执行UPPERCASE(foo)。并在NOT LIKE表达式中添加+, - 等其他字符。
请参阅:http://msdn.microsoft.com/en-us/library/ms187489(SQL.90).aspx