Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server查询以输出如下所示的数据_Sql Server_Tsql - Fatal编程技术网

Sql server SQL server查询以输出如下所示的数据

Sql server SQL server查询以输出如下所示的数据,sql-server,tsql,Sql Server,Tsql,我有一个包含如下字符串的列: 1. "HDPE Unlaminated Fabric-60gsm 101 White" 2. "SUP 150 110 GSM white Cut piece" 3. "HDPE LF 140/120 GSM Mix color" 4. "self adhsv(50gsm) HDPE 您能否帮助我编写查询以获得如下所示的输出: 1. "HDPE Unlaminated Fabric-60gsm 101 White" | 60gsm 2. "SUP 150 110

我有一个包含如下字符串的列:

1. "HDPE Unlaminated Fabric-60gsm 101 White"
2. "SUP 150 110 GSM white Cut piece"
3. "HDPE LF 140/120 GSM Mix color"
4. "self adhsv(50gsm) HDPE
您能否帮助我编写查询以获得如下所示的输出:

1. "HDPE Unlaminated Fabric-60gsm 101 White" | 60gsm
2. "SUP 150 110 GSM white Cut piece"         | 110 GSM
3. "HDPE LF 140/120 GSM Mix color"           | 140/120 GSM
4. "self adhsv(50gsm) HDPE                   | 50gsm

您可以使用返回所需结果的T-SQL内置函数创建语句,但它:

将是复杂的 当你的情况发生变化时会变得更加复杂 所以,你很难改变它并支持它。对我来说,使用正则表达式可以更恰当地处理此类任务

我们有两个选择:

读取数据并在客户端或后端例程JavaScript、C等中使用正则表达式执行转换; 创建允许在T-SQL语句上下文中使用的SQL CLR函数 对于第二个选项,请按照我链接的示例创建RegexMatches函数,您可以在我的环境中执行以下类似操作:

DECLARE @DataSource TABLE
(
    [value] NVARCHAR(128)
);

INSERT INTO @DataSource ([value])
VALUES ('HDPE Unlaminated Fabric-60gsm 101 White')
      ,('SUP 150 110 GSM white Cut piece')
      ,('HDPE LF 140/120 GSM Mix color')
      ,('self adhsv(50gsm) HDPE');

SELECT *
FROM @DataSource 
CROSS APPLY dbo.fn_Utils_RegexMatches ([value], '(?i)\d+[\d/]+\s*gsm');
几点重要提示:

您需要付出一些努力来理解和实现SQLCLR函数 在过去的几年中,微软已经添加了很多内置函数,比如字符串聚合和字符串拆分,但是作为SQL Server 2019,没有对regex的内置支持 如果您没有时间学习或不允许支持/创建SQL CLR函数,则最好在SQL Server之外执行该操作
如果您实现了正则表达式SQL CLR函数,您会发现解决特定问题非常简单明了。

从TableName中选择columnA、columnB可能有前8个……请阅读。理想情况下,将数据作为文本而不是图像发布。更好的帖子是作为DDL/DML语句,人们可以复制和粘贴以进行测试。我会在将来处理它的。不要在将来这样做,现在就这样做。问题分数为负的用户确实会被禁止提问,这意味着你每个月只能问一次问题,甚至每6个月只能问一次问题,而这一要求已经有4张反对票了。请花点时间解决您的问题,以便您将来可以提问。谢谢,您可以帮助我如何创建RegexMatches吗?检查我添加的链接-您将在那里看到如何创建SQL CLR函数。在这里,你可以找到函数的代码-