模块 6 · 第 1 课(共 4)课程中的21/57~12 min
模块课程(1/4)
字符串函数
PostgreSQL 有数十个用于操作字符串的函数。在本课中
我们看看实际工作中最常见的:规范化(LOWER/UPPER),
测量 (LENGTH)、组合 (|| / CONCAT)、提取 (SUBSTRING)、
清理 (TRIM)、替换 (REPLACE) 和模式搜索
(LIKE / ILIKE)。
我们将使用的函数
SQL
LOWER('Alice') -- 'alice'
UPPER('alice') -- 'ALICE'
LENGTH('alice') -- 5
'a' || 'b' -- 'ab' (concatenazione)
CONCAT('a', 'b', 'c') -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ') -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'|| 是用于连接字符串的标准 SQL 运算符; CONCAT 是
更宽松(它忽略 NULL,而 || 传播它们:
'a' || NULL → NULL)。
LIKE 和 ILIKE:按模式搜索
LIKE 搜索模式:% = 任何序列,_ = 单个
性格。它区分大小写。 ILIKE 是 PostgreSQL
不区分大小写变体:
SQL
WHERE name LIKE '%Cuffie%' -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%' -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE '%@example.com'
WHERE first_name LIKE 'A_____' -- inizia per A, lungo 6 (A + 5 caratteri)要在模式内搜索文字 % 或 _,请使用 ESCAPE:
SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"组合功能
函数的组成就像任何语言一样:
SQL
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
|| UPPER(SUBSTRING(last_name FROM 1 FOR 1)) || '.' AS iniziali
FROM customers
ORDER BY id;尝试一下
锻炼#sql.m6.l1.e1
尝试:0加载中...
对于每个客户,以小写形式显示电子邮件(电子邮件列),并将全名显示为“名字姓氏”(全名列)。按 ID 订购。
正在加载编辑器...
显示提示
LOWER 第一列,||之间用空格连接。
3 次尝试后可用的解决方案
复习练习
锻炼#sql.m6.l1.e2
尝试:0加载中...
查找名称中包含“笔记本电脑”一词(任何情况)的所有产品。仅显示名称列。按名字订购。
正在加载编辑器...
显示提示
ILIKE 不区分大小写。使用 '%laptop%' 可以匹配任意位置的 'laptop'。
3 次尝试后可用的解决方案