首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -从字符串中提取城市。

SQL -从字符串中提取城市。
EN

Stack Overflow用户
提问于 2016-09-02 13:17:15
回答 3查看 131关注 0票数 0

我有一个领域,它是一个机票旅行,它总是不从城市代码开始,而且它因票而异。很好的例子:

代码语言:javascript
复制
HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT

然而,在某些情况下,它的开头是"I-“或日期,如”18 are“或”18 are 16“或”18 are 2016“。以下是几个例子:

代码语言:javascript
复制
I- HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT
18JAN HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT
18JAN16 HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT
18JAN2016 HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT

因此,我希望得到一些帮助,以便只从字符串中检索第一个城市,在上述情况下,字符串是"HAM"

EN

回答 3

Stack Overflow用户

发布于 2016-09-02 14:03:13

试试这个:

代码语言:javascript
复制
Declare @tblTest AS Table
(
   Ticket VARCHAR(100)
)

INSERT INTO @tblTest VALUES ('I- HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT')
INSERT INTO @tblTest VALUES ('18JAN HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT')
INSERT INTO @tblTest VALUES ('18JAN16 HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT')
INSERT INTO @tblTest VALUES ('18JAN2016 HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT')

SELECT  
    SUBSTRING
    (
        REPLACE
        (
            Ticket,
            SUBSTRING(Ticket,1,CHARINDEX(' ',Ticket)),
            ''
        ),
        0,
        CHARINDEX
        (
            ' ',
            REPLACE
            (
                Ticket,
                SUBSTRING(Ticket,1,CHARINDEX(' ',Ticket)),
                ''
            )
        )
    )
FROM @tblTest
票数 1
EN

Stack Overflow用户

发布于 2016-09-02 13:37:27

对于Server,请使用以下脚本。

代码语言:javascript
复制
DECLARE @data VARCHAR(150)='18JAN HAM EK X/DXB EK DUR M/IT EK X/DXB EK HAM M/IT'

SELECT CASE WHEN @data LIKE 'I_%' THEN SUBSTRING(@data,CHARINDEX(' ', @data),CHARINDEX(' ', @data,CHARINDEX(' ',@data) + 1) + 1-CHARINDEX(' ', @data)) 
            WHEN @data LIKE '[0-9]%' THEN SUBSTRING(@data,CHARINDEX(' ', @data),CHARINDEX(' ', @data,CHARINDEX(' ',@data) + 1) + 1-CHARINDEX(' ', @data))
            ELSE SUBSTRING(@data,1,CHARINDEX(' ', @data)) END
票数 0
EN

Stack Overflow用户

发布于 2016-09-02 13:44:43

您可以使用SUBSTRING,如果您知道要从哪个位置选择前缀的长度总是新的,那么这几乎没有什么意义,就好像您在搜索' cities ‘,那么您将从某个地方(一个城市表或硬代码值)驱动它。所以我想你会去寻找

代码语言:javascript
复制
WHERE field = "%HAM%" or WHERE field IN ('list','of','cities') 

然后使用它通知查询输出。

我的建议是,不要考虑从您要搜索的字符串中选择,而是使用搜索的输入通知输出。我希望这是合理的。如果你有疑问要看,我会尝试提出一些建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39293423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档