【发布时间】:2021-03-02 22:14:59
【问题描述】:
我有一个 SQL 表:
column1
--------
05 MODE-PARTNER MIC Z(7)9
08 MODE-FLERS01 MIC X
输出:
column1 column2 column3
----------------------------------
05 MODE-PARTNER MIC Z(7)9
08 MODE-FLERS01 MIC X
我使用了patindex 和charindex,但结果不正确。
请帮我处理 SQL 查询。
我的查询:
select
column4
, LEFT(column4, PATINDEX('%[0-9][^0-9]%', column4 )) AS column1
, LTRIM(RIGHT(column4, LEN(column4) - PATINDEX('%[0-9][^0-9]%', column4 ))) As column2
, CASE WHEN CHARINDEX('PIC',column4)>0 THEN ltrim(SUBSTRING(column4,1,CHARINDEX('PIC',column4)-1)) ELSE column4 END column2_new
, CASE WHEN CHARINDEX('PIC',column4)>0 THEN ltrim(SUBSTRING(column4,CHARINDEX('PIC',column4)-0,len(column4))) ELSE NULL END AS column3
from table1
where column4 IN ('05 MODE-PARTNER MIC Z(7)9','08 MODE-FLERS01 MIC X')
【问题讨论】:
-
选择 column4 ,LEFT(column4, PATINDEX('%[0-9][^0-9]%', column4 )) AS column1 ,LTRIM(RIGHT(column4, LEN(column4) - PATINDEX('%[0-9][^0-9]%', column4 ))) As column2,CASE WHEN CHARINDEX('PIC',column4)>0 THEN ltrim(SUBSTRING(column4,1,CHARINDEX('PIC ',column4)-1)) ELSE column4 END column2_new,CASE WHEN CHARINDEX('PIC',column4)>0 THEN ltrim(SUBSTRING(column4,CHARINDEX('PIC',column4)-0,len(column4))) ELSE NULL END AS column3 from table1 where column4 IN ('05 MODE-PARTNER MIC Z(7)9','08 MODE-FLERS01 MIC X')
-
在提出问题时,您需要提供一个可重现的最小示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 你的 SQL Server 版本 (SELECT @@version;)
标签: sql sql-server tsql