@Phoneno varchar
@Phoneno='(123)(4520)'
如何检查 @ Phoneno 中是否没有带括号的数字?示例
@Phoneno='()()'
@Phoneno varchar
@Phoneno='(123)(4520)'
@Phoneno='()()'
您可以使用REPLACE函数来删除括号:
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';
@Phoneno=')(1)(('
这样的值怎么办? - KM.if @Phoneno like '([0-9][0-9][0-9])([0-9][0-9][0-9][0-9])'
print 'ok'
else
print 'not ok'
ISNUMERIC 方法的一个小问题是它允许十进制和负号。这个问题可以通过将这些字符替换为空格来修复(但仍然不能验证正确的长度)。
使用SQL Server内置的默认文本功能并不容易实现。
如果您使用的是SQL Server 2005及以上版本,则可以使用CLR函数 - 其中比较流行的是用于日期操作和正则表达式的函数。
正则表达式扩展可以实现此功能。
使用规范化的形式存储数据,让应用程序解析和拆分数据,这样您只需将有效的数字存储在数据库中!如果必须存储“(”和“)”字符以便后续显示,请这么做,但如果没有值,请不要存储()()
,而应将其存储为null
。
()()
。 - KM.