Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (P-Z)

 

PATINDEX 函数 [String]

返回一个整数,该整数表示模式第一次在字符串中出现的起始位置。

语法
PATINDEX( '%pattern%', string-expression )
参数
  • pattern   要搜索的模式。如果省略前导百分号通配符,则模式出现在字符串起始处时,PATINDEX 函数返回一 (1),否则返回零。

    模式与 LIKE 比较运算使用相同的通配符。这些通配符如下:

    通配符 匹配项
    _(下划线) 任意一个字符
    %(百分号) 包含零个或多个字符的任意字符串
    [] 指定范围或集合中的任何单个字符
    [^] 不在指定范围或集合中的任何单个字符

  • string-expression   要在其中搜索模式的字符串。

返回值

INT

注释

PATINDEX 函数返回模式第一次出现的开始位置。如果未找到模式,则返回零 (0)。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下语句返回值 2。

SELECT PATINDEX( '%hoco%', 'chocolate' );

以下语句返回值 11。

SELECT PATINDEX( '%4_5_', '0a1A 2a3A 4a5A' );

以下语句返回 14,即字符串表达式中第一个非字母数字字符。注意,如果数据库区分大小写,则可使用模式 '%[^a-z0-9]%' 代替 '%[^a-zA-Z0-9]%'

SELECT PATINDEX( '%[^a-zA-Z0-9]%', 'SQLAnywhere11 has many new features' );

要获得字符串中的第一个字母数字单词,可以通过类似下面的方式:

SELECT LEFT( @string, PATINDEX( '%[^a-zA-Z0-9]%', @string ) );