摘要:在本教程中,您将学习如何使用 SQL POSITION 函数来查找子字符串在字符串中首次出现的位置。
SQL POSITION 函数简介 #
在 SQL 中,POSITION 函数返回一个整数,表示子字符串在字符串中首次出现的位置。
以下是 POSITION 函数的语法:
POSITION(substring IN string)Code language: SQL (Structured Query Language) (sql)POSITION 接受两个参数:
substring:您要查找的字符序列。string:您要在其中搜索子字符串的字符串。
POSITION 函数返回一个整数,表示子字符串首次出现的位置。该位置是一个基于 1 的索引,意味着字符串中的第一个字符位置为 1,依此类推。
如果子字符串不存在,POSITION 函数将返回 0。
基本的 SQL POSITION 示例 #
以下示例使用 POSITION 示例来查找字符串 "SQL" 在字符串 "SQL will, SQL will rock you!" 中首次出现的位置。
SELECT
POSITION('SQL' IN 'SQL will, SQL will rock you!') AS sql_position;Code language: PHP (php)输出
sql_position
--------------
1以下示例返回零,因为输入字符串中不包含子字符串 “We”。
SELECT
POSITION('We' IN 'SQL will, SQL will rock you!') AS result;Code language: PHP (php)输出
result
--------
0在员工姓名中查找子字符串的位置 #
我们将使用 HR 示例数据库中的 employees 表来演示 POSITION 函数。

以下查询使用 POSITION 函数来查找 first_name 列中包含字母 A 的员工及其位置。
SELECT
first_name,
POSITION('A' IN first_name) AS position_of_a
FROM
employees
WHERE
POSITION('A' IN first_name) > 0;Code language: SQL (Structured Query Language) (sql)输出
first_name | position_of_a
------------+---------------
Alexander | 1
Alexander | 1
Adam | 1
...Code language: SQL (Structured Query Language) (sql)根据子字符串位置筛选行 #
以下语句使用 POSITION 函数来查找电子邮件地址以字母 J 开头的员工。
SELECT
email
FROM
employees
WHERE
POSITION('j' IN email) = 1;Code language: SQL (Structured Query Language) (sql)输出
email
-----------------------------------
[email protected]
jose [email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]Code language: SQL (Structured Query Language) (sql)在此示例中,我们在 WHERE 子句中使用 POSITION 函数来筛选出 email 列中字母 j 是第一个字符的行。
将 POSITION 函数与 CASE 表达式结合使用 #
以下查询使用 POSITION 函数与 CASE 表达式来标记电话号码以 555 开头的员工。
SELECT
phone_number,
CASE
WHEN POSITION('515' IN phone_number) > 0 THEN 'Starts with 515'
ELSE 'Does not start with 515'
END AS status
FROM
employees;Code language: SQL (Structured Query Language) (sql)输出
phone_number | status
---------------+-------------------------
515-123-4567 | Starts with 515
515-123-4568 | Starts with 515
515-123-4569 | Starts with 515
590-423-4567 | Does not start with 515
590-423-4568 | Does not start with 515
...Code language: SQL (Structured Query Language) (sql)摘要 #
- 使用
POSITION函数返回子字符串在输入字符串中首次出现的位置(基于 1)。 - 如果子字符串在输入字符串中不可用,
POSITION函数将返回零。
数据库 #
本教程是否有帮助?