【问题标题】:SQL - Combining 2 Extracting Functions for 1 fieldSQL - 为 1 个字段组合 2 个提取函数
【发布时间】:2018-01-23 08:48:40
【问题描述】:

我有一个包含用户配置文件的字符串,其中第一部分数据始终相同,第二部分数据始终可变。 我需要提取中间部分

字符串示例;

ABC_01_Operator ,XX=ALPHABET-XYZ
ABC_07_Admin ,XX=ALPHABET-XYZ

我要提取的数据:

01_Operator
07_Admin

我有 2 个函数可以提取一个部分,但我找不到组合它们的方法

1) SUBSTRING (MyField, 5, 12) to start from 01 / 07
2) LEFT(MyField, CHARINDEX(',XX', MyField) - 1)

【问题讨论】:

  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。
  • SUBSTRING(LEFT(MyField, CHARINDEX(',XX', MyField) - 1),5,100)
  • 试试我的回答,希望对你有帮助。

标签: sql substring charindex


【解决方案1】:

像这样将(2) 作为(1) 的第一个参数(为子字符串长度设置一个合理的高值):

select SUBSTRING(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1),5, 1000);

【讨论】:

  • 完美!这正是我所需要的。
【解决方案2】:

试试这个答案:

DECLARE @MyField VARCHAR(100)='ABC_01_Operator ,XX=ALPHABET-XYZ'

SELECT RIGHT(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1)
    ,LEN(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1))-3)

结果:

01_Operator 
07_Admin 

【讨论】:

    【解决方案3】:

    您可以同时使用这两个函数来生成结果

    SELECT substring(MyField, 5, charindex('XX', MyField, 1)-2)
    

    【讨论】:

    • 这只处理一个函数
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多