小编典典

SQL Server-仅将字段内容过滤为数字

sql

如何复制字段的值,但仅复制其数字?

我正在创建一个用于全文搜索的计算列,我想将“电话号码”字段(即varchar)中的值复制到其中,但不复制其格式-
仅数字。在我的计算列公式中将执行此操作的命令是什么?

谢谢!


阅读 362

收藏
2021-03-23

共1个答案

小编典典

您将必须编写一个用户定义的函数来执行此操作。有几种方法可以做到这一点,这是我通过快速谷歌搜索找到的一种方法。

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中剥离非数字字符可能更好。

2021-03-23