如何复制字段的值,但仅复制其数字?
我正在创建一个用于全文搜索的计算列,我想将“电话号码”字段(即varchar)中的值复制到其中,但不复制其格式- 仅数字。在我的计算列公式中将执行此操作的命令是什么?
谢谢!
您将必须编写一个用户定义的函数来执行此操作。有几种方法可以做到这一点,这是我通过快速谷歌搜索找到的一种方法。
CREATE FUNCTION dbo.RemoveChars(@Input varchar(1000)) RETURNS VARCHAR(1000) BEGIN DECLARE @pos INT SET @Pos = PATINDEX('%[^0-9]%',@Input) WHILE @Pos > 0 BEGIN SET @Input = STUFF(@Input,@pos,1,'') SET @Pos = PATINDEX('%[^0-9]%',@Input) END RETURN @Input END
警告:我不会在大型表上或返回数百万行的SELECT中将其放在WHERE条件下,但是它将起作用。
最终,与在DB代码中相比,在应用程序的UI中剥离非数字字符可能更好。