如何选择`Only String`和`Only Int`

时间:2012-05-29 06:55:32

标签: sql sql-server-2008 select int nvarchar

我的数据库中有一些nvachar数据。

aaaa,bb1b,c + cc,1234,dser,5896

我需要选择两个Only StringOnly Int。这是卑鄙的:

首次选择的结果为:aaaadser

第二次选择的结果为:12345896

如何?

2 个答案:

答案 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