将字符串中的数字变成固定字符

gogoshaw223 2018-07-10 03:35:42
请问如何将字符串中的数字变成某个字符呢?
比如 "asd12345qwe23" 变成 "asd[num]qwe[num]"
连续一起的数字变成一个想要的字符串
我用的正则表达式:regexp_replace(原字符串,"^[0-9]+$","[num]")
没有效果 求大神指导 ==
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogoshaw223 2018-07-10
  • 打赏
  • 举报
回复
引用 3 楼 foren_whb 的回复:
看错了。。。还以为是js板块的。。。

那用hive的话怎么写呢
gogoshaw223 2018-07-10
  • 打赏
  • 举报
回复
引用 6 楼 guguda2008 的回复:
IF OBJECT_ID('FUN_MU_REPLACENUM') IS NOT NULL DROP FUNCTION FUN_MU_REPLACENUM
GO
CREATE FUNCTION FUN_MU_REPLACENUM(
@STR VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
--DECLARE @STR VARCHAR(100)
--SELECT @STR='asd[num]qwe23'
BEGIN
WHILE @STR LIKE '%[0-9]%'
BEGIN
SELECT @STR=STUFF(@STR,PATINDEX('%[0-9]%',@STR),PATINDEX('%[^0-9]%',STUFF(@STR+' ',1,PATINDEX('%[0-9]%',@STR+' ')-1,''))-1,'[num]')
END

RETURN @STR
END
GO
SELECT DBO.FUN_MU_REPLACENUM('asd12345qwe23')


引用 6 楼 guguda2008 的回复:
IF OBJECT_ID('FUN_MU_REPLACENUM') IS NOT NULL DROP FUNCTION FUN_MU_REPLACENUM
GO
CREATE FUNCTION FUN_MU_REPLACENUM(
@STR VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
--DECLARE @STR VARCHAR(100)
--SELECT @STR='asd[num]qwe23'
BEGIN
WHILE @STR LIKE '%[0-9]%'
BEGIN
SELECT @STR=STUFF(@STR,PATINDEX('%[0-9]%',@STR),PATINDEX('%[^0-9]%',STUFF(@STR+' ',1,PATINDEX('%[0-9]%',@STR+' ')-1,''))-1,'[num]')
END

RETURN @STR
END
GO
SELECT DBO.FUN_MU_REPLACENUM('asd12345qwe23')

请问下hive的话正则怎么写哇
gogoshaw223 2018-07-10
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
是 SQL Server 的库,还是 Oracle 的?

哪个版本?

我用的hive...是不是发错版块了...
guguda2008 2018-07-10
  • 打赏
  • 举报
回复
IF OBJECT_ID('FUN_MU_REPLACENUM') IS NOT NULL DROP FUNCTION FUN_MU_REPLACENUM
GO
CREATE FUNCTION FUN_MU_REPLACENUM(
@STR VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
--DECLARE @STR VARCHAR(100)
--SELECT @STR='asd[num]qwe23'
BEGIN
WHILE @STR LIKE '%[0-9]%'
BEGIN
SELECT @STR=STUFF(@STR,PATINDEX('%[0-9]%',@STR),PATINDEX('%[^0-9]%',STUFF(@STR+' ',1,PATINDEX('%[0-9]%',@STR+' ')-1,''))-1,'[num]')
END

RETURN @STR
END
GO
SELECT DBO.FUN_MU_REPLACENUM('asd12345qwe23')
吉普赛的歌 2018-07-10
  • 打赏
  • 举报
回复
SQL Server 不直接支持正则, 只有两种方式:
1. 自己写 sqlclr 函数;
2. 自己写普通函数, 判断是否有连接数字, 有就替换下。
丰云 2018-07-10
  • 打赏
  • 举报
回复
sql server不支持正则表达式,

想要使用正则表达式替换,可以自己写一个正则替换函数

参考
丰云 2018-07-10
  • 打赏
  • 举报
回复

看错了。。。还以为是js板块的。。。
丰云 2018-07-10
  • 打赏
  • 举报
回复
var tt = 'asd123que456ttt';
tt.replace(/[0-9]+/g, 'xyz');
卖水果的net 2018-07-10
  • 打赏
  • 举报
回复
是 SQL Server 的库,还是 Oracle 的?

哪个版本?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧