首页 > 数据库 > 数据库开发技术 > 五种主流数据库:常用字符函数
| 字符函数 | 函数功能 | MySQL | Oracle | SQL Server | PostgreSQL | SQLite |
|---|---|---|---|---|---|---|
| CHAR_LENGTH(s) | 返回字符串s包含的字符数量 | ✔️ | LENGTH(s) | LEN(s) | ✔️ | LENGTH(s) |
| CONCAT(s1, s2, …) | 连接字符串 | ✔️ | ✔️ | ✔️ | ✔️ | || |
| INSTR(s, s1) | 返回子串首次出现的位置 | ✔️ | ✔️ | PATINDEX(s1, s) | POSITION(s1 IN s) | ✔️ |
| LOWER(s) | 返回字符串s的小写形式 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| OCTET_LENGTH(s) | 返回字符串s包含的字节数量 | ✔️ | LENGTHB(s) | DATALENGTH(s) | ✔️ | ❌ |
| REPLACE(s, old, new) | 将字符串中的old替换为new | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SUBSTRING(s, n, m) | 返回从位置n开始的m个字符 | ✔️ | SUBSTR(s, n, m) | ✔️ | ✔️ | ✔️ |
| TRIM(s1 FROM s) | 删除字符串开头和结尾的子串 | ✔️ | ✔️ | ✔️ | ✔️ | TRIM(s, s1) |
| UPPER(s) | 返回字符串s的大写形式 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
-- MySQL 和 PostgreSQL
SELECT CHAR_LENGTH('数据库'), OCTET_LENGTH('数据库');
CHAR_LENGTH('数据库')|OCTET_LENGTH('数据库')
--------------------|---------------------
3| 9
-- Oracle
SELECT LENGTH('数据库'), LENGTHB('数据库')
FROM dual;
-- SQL Server
SELECT LEN('数据库'), DATALENGTH('数据库');
LEN|DATALENGTH
---|----------
3| 6
-- SQLite
SELECT LENGTH('数据库');
LENGTH('数据库')
--------------
3
-- MySQL、Microsoft SQL Server 以及 PostgreSQL
SELECT CONCAT('S', 'Q', 'L');
CONCAT('S', 'Q', 'L')
---------------------
SQL
SELECT CONCAT(CONCAT('S', 'Q'), 'L')
FROM dual;
-- SQLite、Oracle 以及 PostgreSQL
SELECT 'S' || 'Q' || 'L';
-- MySQL、Microsoft SQL Server 以及 PostgreSQL
SELECT CONCAT_WS('-','S', 'Q', 'L');
CONCAT_WS('-','S', 'Q', 'L')
----------------------------
S-Q-L
SELECT LOWER('SQL'), UPPER('sql')
FROM employee
WHERE emp_id = 1;
LOWER('SQL')|UPPER('sql')
------------|------------
sql |SQL
-- MySQL、Microsoft SQL Server、PostgreSQL 以及 SQlite
SELECT SUBSTRING('数据库', 1, 2);
SUBSTRING('数据库', 1, 2)
-----------------------
数据
-- Oracle、MySQL、PostgreSQL 以及 SQLite
SELECT SUBSTR('数据库', 1, 2)
FROM dual;
-- Oracle、MySQL 以及 SQLite
SELECT SUBSTR('数据库', -2, 2)
FROM employee
WHERE emp_id = 1;
SUBSTR('数据库', -2, 2)
---------------------
据库
-- Oracle、MySQL 以及 SQLite
SELECT email, INSTR(email, '@')
FROM employee
WHERE emp_id = 1;
email |INSTR(email, '@')
-----------------|-----------------
liubei@shuguo.com| 7
-- Microsoft SQL Server
SELECT email, PATINDEX('%@%', email)
FROM employee
WHERE emp_id = 1;
-- PostgreSQL
SELECT email, POSITION('@' IN email)
FROM employee
WHERE emp_id = 1;
SELECT email, REPLACE(email, 'com', 'net')
FROM employee
WHERE emp_id = 1;
email |REPLACE(email, 'com', 'net')
-----------------|----------------------------
liubei@shuguo.com|liubei@shuguo.net
-- Oracle、MySQL、Microsoft SQL Server 以及 PostgreSQL
SELECT TRIM('-' FROM '--S-Q-L--'), TRIM(' S-Q-L ')
FROM employee
WHERE emp_id = 1;
TRIM('-' FROM '--S-Q-L--')|TRIM(' S-Q-L ')
--------------------------|-----------------
S-Q-L |S-Q-L
-- SQLite
SELECT TRIM('--S-Q-L--', '-'), TRIM(' S-Q-L ');
原文作者:SQL编程思想;如有侵权,请联系管理员删除。