sql - 如何在 sql 查询中提取自定义模板?
问题描述
我在 SQL Server 中有这样的一列,我需要获取此代码
## Title##
حساب-س1-2564492-305-151ساير سپرده ها
حساب-س151.305.881307.1ساير سپرده ها
حساب-س1-1547032-305-151ساير سپرده ها
حساب-س1-96658-305-651ساير سپرده ها
حساب-س1-7349772-305-751ساير سپرده ها
حساب-س2-96658-305-851ساير سپرده ها
حساب-س1-5545530-305-951ساير سپرده ها
如何从该列中提取以下数据?
此代码有 1-2564492-305-151、151.305.881307.1 标题
## Title##
1-2564492-305-151
151.305.881307.1
1-1547032-305-151
1-96658-305-651
1-7349772-305-751
2-96658-305-851
1-5545530-305-951
我使用此代码,但有时它不起作用
ALTER FUNCTION [dbo].[FindNumbers_Slash]
(
@inputstring VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
--declare variables---
DECLARE @count1 SMALLINT
DECLARE @len1 SMALLINT
DECLARE @word VARCHAR(100)
DECLARE @char1 CHAR
--Assignment---
SET @word = ''
SET @count1 = 1
SET @len1 = DATALENGTH(@inputstring)
WHILE @count1 <= @len1
BEGIN
SET @char1 = SUBSTRING(@inputstring ,@count1 ,1)
IF (@char1 BETWEEN '0' AND '9')
OR @char1 = '/'
BEGIN
SET @word = @word + SUBSTRING(@inputstring ,@count1 ,1)
END
ELSE
BEGIN
IF RIGHT(@word ,1) <> '-'
AND LEN(@word) <> 0
SET @word = @word + '-'
END
SET @count1 = @count1 + 1
END
RETURN @word
END
此代码是 85% OK 但不是 100%。
解决方案
我认为这是因为语言substring()
无法正常工作。当我反转它并应用它时,substring()
它起作用了。
IF OBJECT_ID('FindNumbers_Slash_V2') IS NOT NULL
DROP FUNCTION [dbo].[FindNumbers_Slash_V2];
GO
CREATE FUNCTION [dbo].[FindNumbers_Slash_V2]
(
@InputString NVARCHAR(1000)
)
RETURNS NVARCHAR(1000)
AS
BEGIN
DECLARE @Word NVARCHAR(1000)
SET @Word = SUBSTRING(@InputString
,PATINDEX('%[0-9]%',@InputString)
,LEN(@InputString)+1 - PATINDEX('%[0-9]%',@InputString)
)
SET @Word = REVERSE(@Word)
SET @Word = SUBSTRING(@Word
,PATINDEX('%[0-9]%',@Word)
,LEN(@Word)+1 - PATINDEX('%[0-9]%',@Word)
)
RETURN REVERSE(@Word)
END
推荐阅读
- r - 用于返回文本动词的 POS 标记函数的错误结果
- javascript - 如何从 react-datepicker 2.0.0 输入中获取字符串值?
- android - 当我在单独的库中移动活动后尝试运行应用程序时,引发无法实例化活动 ClassNotFoundException/
- sas - 在报告中包含宏观条件
- c - C:结构体、联合体和枚举的总称?
- notifications - Grafana 通知通道在配置中添加?
- scala - 如何在 SparkSQL 中给定 StructType 作为 Schema 创建 ArrayData 或 InternalRow?
- jquery - 如何通过本地主机从同一台计算机访问图像?
- python - 如何在MultiIndexed Datarfame中对一个索引大于X的所有值求和,对其他索引进行分组?
- java - Greenmail SMTP 服务器无法作为自定义 docker 镜像正常工作