@Phoneno varchar
@Phoneno='(123)(4520)'
如何检查@ Phone在箭头括号中是否没有数字? 示例
@Phoneno='()()'
答案 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
。