当前位置: 首页 > 面试题库 >

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

长孙修远
2023-03-14
问题内容

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

我正在创建一个用于全文搜索的计算列,我想将“电话号码”字段(即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中剥离非数字字符可能更好。



 类似资料:
  • 从采集内容中移除掉多余无用内容。 单元素采集场景 列表采集场景 很多时候我们采集回来的内容中会包含一些"杂质",如果只是想要移除或替换内容中的某些关键词,直接用字符串替换函数就可以轻松解决,但往往实际情况没这么简单,下面就是一个典型的例子: $html =<<<STR <div id="content"> <span class="tt">作者:xxx</span>

  • 例如insert时需要忽略某个特定属性, update时只更新某些属性, 查询时需要跳过大字段等。 FieldFilter/FieldMatcher提供细致的过滤选项,包括: 黑名单(locked) 白名单(actived) 忽略空值(ignoreNull) 忽略数值0(ignoreZero) 忽略日期属性(ignoreDate) 忽略空字符串(ignoreBlankStr) 忽略数值型主键(ig

  • 可以对搜索结果进行过滤,只显示包含特定字段值的文档。也可以创建否定过滤器,排除包含特定字段值的文档。 从 Fields 表或 Documents 表中选择要添加的字段过滤器。除了可以创建积极字段和消极过滤器外,Documents 表还可以过滤某一字段是否存在。使用过的过滤器会在 Query 栏下方显示。消极过滤器用红色显示。 从 Fields 列表中添加一个过滤器: 点击想要过滤的字段名。这里显示

  • 问题内容: 我该如何过滤具有一个数组的字段并且具有超过N个元素的文档? 如何过滤具有为空数组的字段的文档? 是解决方案吗?如果是这样,怎么办? 问题答案: 我来看看脚本过滤器。以下过滤器应仅返回在字段中具有至少10个元素的文档,该文档是一个数组。请记住,这可能很昂贵,具体取决于索引中有多少个文档。 关于第二个问题:那里真的有一个空数组吗?还是仅仅是一个没有值的数组字段?您可以使用缺少的过滤器来获取

  • 我有下表: 选择*结果JSON schema JSON: 我想通过cust_id和重复的字段来过滤它们的值,所以查询如下: 查询的预期输出: JSON格式查询的预期输出: 受这个问题的启发BigQuery:用标准SQL过滤重复字段我试试这个查询: 哪个输出: 输出JSON: 输出结果是不一样的,我想有,我如何才能实现这一点?

  • 问题内容: 我想为我的主页创建内容片段。一个示例帖子看起来像 在主页上,我只希望显示之前的内容。我在想可以在Jinja过滤器中使用Beautiful Soup来剪掉readmore及其后的所有内容。如果不存在,它应该剪切在第一个换行符或段落末尾。 我怎样才能做到这一点? 问题答案: 只需检查文本中是否存在或其他子字符串,然后在其上拆分,或者在换行符上不拆分该子字符串。