在sql server中检查字符串是否包含特定值

时间:2010-03-11 14:59:42

标签: sql-server

@Phoneno varchar
@Phoneno='(123)(4520)'

如何检查@ Phone在箭头括号中是否没有数字? 示例

@Phoneno='()()' 

4 个答案:

答案 0 :(得分:1)

您可以使用REPALCE功能删除括号:

DECLARE @Phoneno varchar(1000) = '(123)(4520)';

SET @Phoneno = REPLACE(REPLACE(@Phoneno, '(', ''), ')', '');

IF (ISNUMERIC(@Phoneno) = 1) 
   SELECT 'Phoneno not empty';
ELSE
   SELECT 'Phoneno empty or invalid';

答案 1 :(得分:1)

如果你想检查电话号码的格式是否为(nnn)(nnnn),第一部分中必须有3个数字,第二部分必须有4个数字,你可以这样做:

if @Phoneno like '([0-9][0-9][0-9])([0-9][0-9][0-9][0-9])'
    print 'ok'
else
    print 'not ok'

ISNUMERIC方法的一些小问题是它将允许小数和减号。这可以通过用空白替换那些字符来修复(但仍然不能验证正确的长度)。

答案 2 :(得分:0)

使用SQL Server内置的默认文本功能并不容易。

如果您使用的是SQL Server 2005及更高版本,则可以使用CLR函数 - 其中一种更常用的是日期操作和regular expressions

正则表达式扩展可以做到这一点。

答案 3 :(得分:-1)

以规范化形式存储数据,让应用程序解析并拆分,这样您就可以将有效数字存储在数据库中!如果您必须存储“(”和“)”字符以供日后显示,请执行此操作,但如果没有值,则不要将()()存储为null