删除sql SELECT中的所有非数字字符

2023-12-26

我想在 SQL 中调用查询时删除所有非数字字符。 我有一个函数,在函数中,我这样做:

Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^0-9]%'
While PatIndex(@KeepValues, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

但现在我想用查询(选择)来做到这一点。 我尝试过,但这不起作用

select substring(AdrTelefon1, PatIndex('%[^0-9]%', AdrTelefon1), 2000) from test

EDIT我有!选择查询以删除非数字字符 https://stackoverflow.com/questions/18625548/t-sql-select-query-to-remove-non-numeric-characters

它无法正常工作

SELECT LEFT(SUBSTRING(AdrTelefon1, PATINDEX('%[0-9]%', AdrTelefon1), 8000),
       PATINDEX('%[^0-9]%', SUBSTRING(AdrTelefon1, PATINDEX('%[0-9]%', AdrTelefon1), 8000) + 'X') -1) from test

我有 04532/97,在这个查询之后,我有 04532 但我需要 0453297


前段时间我使用下面的函数解决了这个问题

create function dbo.[fnrReplacetor](@strtext varchar(2000))
returns varchar(2000)
as
begin
    declare @i int = 32, @rplc varchar(1) = '';
    while @i < 256
    begin
        if (@i < 48 or @i > 57) and CHARINDEX(char(@i),@strtext) > 0
        begin
            --° #176 ~ 0   --¹ #185 ~ 1   --² #178 ~ 2   --³ #179 ~ 3
            set @rplc = case @i
            when 176 then '0'
            when 185 then '1'
            when 178 then '2'
            when 179 then '3'
            else '' end;

            set @strtext = REPLACE(@strtext,CHAR(@i),@rplc);
        end

        set @i = @i + 1;
    end
    return @strtext;
end

GO

select dbo.[fnrReplacetor]('12345/97')

请注意,我也会考虑字符°,¹,²,³数字,然后替换为 0,1,2,3。

我将其放入一个函数中,以便在我需要同时修复许多表中的许多列的场景中轻松重用它。

update t
set t.myColumn = dbo.[fnrReplacetor](tempdb.myColumn)
 from test t
 where tempdb.myColumn is not null

or just

select dbo.[fnrReplacetor](tempdb.myColumn) as [Only Digits]
 from test t
where tempdb.myColumn is not null

Obs:这不是最快的方法,而是彻底的方法。

Edit

必须使用非 UDF 解决方案REPLACE但由于正则表达式在 SQL 中并不是那么好,你可以结束做一些令人讨厌的事情,如下例所示:

declare @test as table (myColumn varchar(50))

insert into @test values ('123/45'),('123-4.5')

Select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(myColumn,'a',''),'b',''),'c',''),'d',''),'e',''),'f',''),'g',''),'h',''),'i',''),'j',''),'k',''),'l',''),'m',''),'n',''),'o',''),'p',''),'q',''),'r',''),'s',''),'t',''),'u',''),'v',''),'w',''),'x',''),'y',''),'z',''),'A',''),'B',''),'C',''),'D',''),'E',''),'F',''),'G',''),'H',''),'I',''),'J',''),'K',''),'L',''),'M',''),'N',''),'O',''),'P',''),'Q',''),'R',''),'S',''),'T',''),'U',''),'V',''),'W',''),'X',''),'Y',''),'Z',''),'.',''),'-',''),'/','')
from @test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除sql SELECT中的所有非数字字符 的相关文章

  • 整理有关 QueryDSL-JPA 的提示

    有没有办法用 QueryDSL 来执行它 粗体部分 从地点选择 其中名称如 cafe 整理 Latin1 general CI AI 我将 JPA 与 hibernate 一起使用 您可以使用addFlag QueryFlag Positi
  • 使用绑定和空值命中 Oracle 索引的最佳查询

    我有一个表 该表在多个列上有一个索引 其中许多列可以为空 CREATE UNIQUE INDEX UX MYTABLE A B C D E ON MYTABLE A B C D E 现在 我在 C 代码中尝试检查该表并精确命中索引 对于每个
  • MySQL 子查询返回多行

    我正在执行这个查询 SELECT voterfile county Name voterfile precienct PREC ID voterfile precienct Name COUNT SELECT voterfile voter
  • 如何在 SQL Server 中什么都不做[重复]

    这个问题在这里已经有答案了 可能的重复 T SQL 中的空语句 https stackoverflow com questions 3234871 empty statement in t sql 我怎样才能让它在 SQL Server 中
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 将列的值添加到 LIKE 语句中?

    我有 3 个标签表 标签类别和使用过的标签 我想要获取所有标签的列表以及已使用标签的计数 所使用标签的格式是每个具有标签的文档 ID 的逗号分隔值 我一直在尝试类似的方法 但无法将tags tag 字段的值插入到LIKE 语句中 SELEC
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • SQL Server 查询结果集的大小

    SQL Server 中是否有确定结果集中 Mgmt Studio 查询中返回的数据大小 以 MEGS 为单位 您可以打开客户端统计信息 查询菜单 包括客户端统计信息 它给出执行查询时从服务器返回的字节数
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • 消息 102,级别 15,状态 1,第 1 行“ ”附近的语法不正确

    我试图从临时表中查询 但不断收到此消息 Msg 102 Level 15 State 1 Line 1 Incorrect syntax near 有人能告诉我问题是什么吗 是因为要转换吗 查询是 select compid 2 conve
  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • 在存储过程结束时显式删除本地临时表有什么好处?

    考虑以下伪 T SQL 代码 由存储过程执行 CREATE TABLE localTable
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑
  • 对具有许多索引的表进行缓慢的批量插入

    我尝试将数百万条记录插入到具有 20 多个索引的表中 在上次运行中 每 100 000 行花费了 4 个多小时 并且查询在 3 5 天后被取消 您对如何加快速度有什么建议吗 我怀疑是索引太多的原因 如果你也这么认为 如何在操作前自动删除索引
  • 循环表行的最佳方法是什么?

    在 SQL Server 2008 R2 中循环数据库表行的最佳方法是什么 我正在寻找与编写 foreach 非常相似并且性能相当的东西 Thanks 最佳性能 不要循环表的行 使用基于集合的操作 Here s 关于 为什么 的良好讨论 h
  • 如何将整行(在 SQL 中,而不是 PL/SQL 中)传递给存储函数?

    我遇到以下 非常简单 问题 我想编写一个 Oracle SQL 查询 大致如下 SELECT count MyFunc MyTable FROM MyTable GROUP BY MyFunc MyTable 在 PL SQL 中 可以使用
  • 如何在sqlite中添加特定数量的空行?

    我有一个SQLite文件 我想添加2550 empty NULL rows 我可以使用此代码添加一个空行 INSERT INTO my table DEFAULT VALUES 但我需要 2550 行 有什么捷径吗 我不想执行相同的代码 2
  • 按两列的最小值排序

    I use SQL Server 2008 R2 我需要按两列的最小值对表进行排序 该表如下所示 ID integer Date1 datetime Date2 datetime 我希望我的数据按至少两个日期排序 以这种方式对该表进行排序的
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • 无法重置Root密码:windows、MySQL8.0

    我忘记了 root 密码 我正在遵循官方网站 https dev mysql com doc mysql windows excerpt 8 0 en resetting permissions windows html重置我的密码 我已按
  • 在 RabbitMQ 中,哪个更昂贵,每个交换器有多个队列,还是多个交换器且每个交换器有更少的队列?

    因此 我们决定在向微服务架构的迁移中使用 RabbitMQ 作为消息 事件总线 但我们无法找到放置队列的最佳方式的明确答案 我们有两个选择 One main exchange which will be a Fanout exchange
  • 已安装 Poetry 但“poetry:未找到命令”

    最近我在诗歌方面遇到了一百万零一个问题 我昨天已经完全安装并工作了 但是重新启动我的机器后 我又遇到了问题 即使在重新启动后 是否有办法在我的终端中始终识别诗歌 系统规格 Windows 10 Visual Studio 代码 Bash W
  • Horizo​​ntalScrollView,自动滚动到结束并有动画

    我有一个horizo ntalScrollView 当我加载视图时 我需要进行自动滚动以以动画结束 我已经实现了这个方法来做到这一点 final HorizontalScrollView strip HorizontalScrollView
  • Selenium WebDriver 查找第 n 个元素

    我遇到了一个问题 无法解决它 我必须访问页面上的第 n 个图像 该图像位于 HTML 内的表格中 我需要单击图像以分别为每一行移动到下一个屏幕 我已经尝试了此处提供的各种解决方案 但由于我正在使用 findElement by 语法 因此我
  • 缩放 HTML5 视频并打破宽高比以填充整个网站

    我想使用 4 3 视频作为网站的背景 但是 将宽度和高度设置为 100 不起作用 因为宽高比保持不变 因此视频不会填充网站的整个宽度 这是我的 HTML 和 CSS 代码 HTML
  • 如何通过 Android KitKat 在外部 SD 卡上使用 O_DIRECT 或 O_SYNC

    我在一家生产包含硬件加密引擎的 SD 存储卡的公司工作 我们通过写入 读取特殊文件来与加密模块交互 从 KitKat 开始 O DIRECT外部 SD 卡似乎不支持该标志 没有O DIRECT or O SYNC支持 当我们从 SD 卡 通
  • RFID RC522 Raspberry PI 2 Windows 物联网

    我正在寻找一种在 Windows IOT 上的 Raspberry Pi 2 0 上使用 RFID RC522 的方法 当然不是官方兼容的 官方的 OM5577 演示板 在法国太贵了 我还没有找到任何经销商在没有大量运费的情况下出售它 总成
  • JS:获取元素的可见区域坐标

    我需要一个函数 可以计算当前在屏幕上可见的元素的可见区域 而无需隐藏部分overflow scroll position absolute etc 也就是这个函数的结果getVisiblePart el 将Visible Rect is x
  • 将 OpenCV 与 Tkinter 结合使用

    我正在编写一个程序 需要在 Tkinter 窗口中显示视频流 由于还有用于执行各种功能的按钮 因此我使用网格来组织所有内容 以下代码 修改自显示网络摄像头序列 TkInter https stackoverflow com question
  • 绘制按函数分组的多个图形并将其保存为 pdf

    我想创建一个包含 12 个图的 pdf 文件 有两个选项 每页一个图 每页四个图 Using plt savefig months pdf 仅保存最后一个图 MWE import pandas as pd index pd date ran
  • Solr高亮问题

    大家好 我有一个问题 当我查询 Solr 时 它会匹配结果 但是当我在此查询的结果上启用突出显示时 突出显示不起作用 我的查询是 内容 项目 503 内容是文本类型 并且文本项 503 中的一个重要内容显示为 项 503 c 最后的左括号会
  • Vuetify 3 组件无法在 chrome 中工作 - 未捕获类型错误:globalStack.at 不是函数

    我在使用从头开始创建的 vuetify 3 插件项目运行 Vue JS 项目时遇到此错误 我专门使用 v dialog 但它在其他组件的 chrome 中也出现控制台错误 Uncaught TypeError globalStack at
  • Git:强制执行 shell 脚本权限

    在 Git 中 您可以签入具有 644 或 755 权限的文件 我想强制所有 sh 文件始终存储为 755 权限 以便可以立即执行它们 尤其是在windows环境下很容易意外丢失权限 那么 有没有办法配置它 最好像使用 gitattribu
  • jaxb XmlAccessType: PROPERTY 示例

    我正在尝试使用 jaxb 并希望使用 XmlAccessType PROPERTY 让 jaxb 使用 getters setters 而不是直接使用变量 但是 get 不同的错误取决于我的尝试或变量 根本没有像我想要的那样设置 有什么好的
  • 仅显示垂直线的表格

    我需要一种方法来仅显示表格中的垂直线 我尝试将 border left 和 border right 添加到表格和单独的 td 中 两者都带有 1pxsolid red 但它不会添加边框颜色 所以我正在寻找一种创建这些垂直线的简单方法 Us
  • 如何在 SQL Server 中拆分字符串并将值插入到表中

    我有一个像这样的字符串 72594206916 2 1 2 08 Tacoma WA 72594221856 5 5 7 13 San Francisco CA 72594221871 99 12 30 12 Dallas TX 这基本上是
  • 用于创建应用程序注册的服务主体权限

    我使用服务主体作为 azure cli 的登录项 该服务主体的角色是 所有者 我正在尝试运行 az ad app list and az ad app create display name Test application 2 并出现错误
  • 如何触及 HABTM 关系

    如果您有 2 个模型 视频和类别 并且它们彼此之间具有 has and belongs to many 关系 那么当其中一个模型发生更改时 如何执行触摸以使缓存失效 您不能像处理一对多关系那样 触摸 它们 现在 当我更改类别名称时 属于该类
  • 删除sql SELECT中的所有非数字字符

    我想在 SQL 中调用查询时删除所有非数字字符 我有一个函数 在函数中 我这样做 Declare KeepValues as varchar 50 Set KeepValues 0 9 While PatIndex KeepValues T