【问题标题】:SQL Server PatIndex what does the dot and hyphen mean? (PatIndex('%[0-9.-]%')SQL Server PatIndex 点和连字符是什么意思? (PatIndex('%[0-9.-]%')
【发布时间】:2017-05-20 07:07:15
【问题描述】:

我用谷歌搜索了又谷歌,然后又用谷歌搜索了一些......但是,我无法弄清楚这一点。

以下 SQL Server 命令中的点和连字符到底是什么意思(在 9 之后)...

PatIndex('%[0-9.-]%'

这是工作中的代码...

declare @tv_raw table(recnum int identity(1, 1) primary key, rawdata nvarchar(max))
insert into @tv_raw(rawdata) values('Washington 40 New Orleans 32')
insert into @tv_raw(rawdata) values('St. Louis 23 Detroit 27')    

select SubString(rawdata, PatIndex('%[0-9.-]%', rawdata)+3,PatIndex('%[0-9.-]%', rawdata))
from @tv_raw

【问题讨论】:

  • 点和连字符只是 [] 中包含的列表中的其他搜索条件。所以任何数字 0-9,即 0,1,2...,8,9 或点或连字符。

标签: sql-server tsql sql-server-2005


【解决方案1】:

Patindex 返回..

返回指定表达式中第一次出现模式的起始位置,如果未找到该模式,则返回零,适用于所有有效的文本和字符数据类型

所以它返回在模式中找到的任何字符的第一个位置...参见下面的修改示例

declare @tv_raw table(recnum int identity(1, 1) primary key, rawdata nvarchar(max))
insert into @tv_raw(rawdata) values('Wa0shington- 40 New Orleans 32')
insert into @tv_raw(rawdata) values('St.- Louis 23 Detroit 27')    

select PatIndex('%[0-9-]%', rawdata)
from @tv_raw

输出:

3
4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多