SQL 字符型单行函数

1. 随机数生成

dbms_random.value() 是 Oracle 数据库中的一个函数,用于生成一个随机小数(范围:0 <= x < 1)。

示例:

1
2
-- 生成一个随机小数
SELECT dbms_random.value() FROM dual;

注意

  • 该函数常用于生成测试数据或随机排序。

2. 字符型单行函数

字符型单行函数用于处理字符串数据,常见的函数包括:

(1)ASCIICHR

  • ASCII:返回字符的 ASCII 码值。
  • CHR:根据 ASCII 码值返回对应的字符。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 返回字符 'A' 的 ASCII 码值
SELECT ASCII('A') FROM dual; -- 结果:65

-- 返回 ASCII 码值为 65 的字符
SELECT CHR(65) FROM dual; -- 结果:'A'

-- 返回换行符
SELECT CHR(10) FROM dual;

-- 输出单引号
SELECT '''' FROM dual;
SELECT CHR(39) FROM dual;

-- 输出两个单引号
SELECT CHR(39) || CHR(39) FROM dual;

(2)大小写转换

  • LOWER:将字符串转换为小写。
  • UPPER:将字符串转换为大写。
  • INITCAP:将每个单词的首字母大写,其余字母小写。
1
2
3
4
5
6
7
8
-- 将字符串转换为小写
SELECT LOWER('HELLO') FROM dual; -- 结果:'hello'

-- 将字符串转换为大写
SELECT UPPER('hello') FROM dual; -- 结果:'HELLO'

-- 将每个单词的首字母大写
SELECT INITCAP('hello world') FROM dual; -- 结果:'Hello World'

(3)字符串连接

  • CONCAT:连接两个字符串。
  • ||:连接多个字符串。
1
2
3
4
5
-- 使用 CONCAT 连接两个字符串
SELECT CONCAT('Hello, ', 'World!') FROM dual; -- 结果:'Hello, World!'

-- 使用 || 连接多个字符串
SELECT 'Hello, ' || 'World!' || ' Welcome!' FROM dual; -- 结果:'Hello, World! Welcome!'

(4)字符串截取

  • SUBSTR:截取子字符串。
1
2
3
4
5
6
7
8
-- 从第 3 个字符开始截取到末尾
SELECT SUBSTR('Hello, World', 3) FROM dual; -- 结果:'llo, World'

-- 从第 3 个字符开始截取 2 个字符
SELECT SUBSTR('Hello, World', 3, 2) FROM dual; -- 结果:'ll'

-- 截取末尾 3 个字符
SELECT SUBSTR('Hello, World', -3) FROM dual; -- 结果:'rld'

(5)字符串长度

  • LENGTH:返回字符串的长度。
1
2
-- 返回字符串的长度
SELECT LENGTH('Hello, World') FROM dual; -- 结果:12

(6)字符串查找

  • INSTR:返回子字符串在源字符串中的位置。
1
2
3
4
5
-- 查找子字符串 'World' 在源字符串中的位置
SELECT INSTR('Hello, World', 'World') FROM dual; -- 结果:8

-- 从第 4 个字符开始查找第 2 个 'l' 的位置
SELECT INSTR('Hello, World', 'l', 4, 2) FROM dual; -- 结果:10

(7)字符串修剪

  • TRIM:去除字符串首尾的空格或指定字符。
  • LTRIM:去除字符串左侧的空格或指定字符。
  • RTRIM:去除字符串右侧的空格或指定字符。
1
2
3
4
5
6
7
8
9
10
11
-- 去除首尾空格
SELECT TRIM(' Hello, World ') FROM dual; -- 结果:'Hello, World'

-- 去除首尾的 'h'
SELECT TRIM('h' FROM 'hhhhellophp') FROM dual; -- 结果:'ellophp'

-- 去除左侧的 'h'
SELECT LTRIM('hhhhellophp', 'h') FROM dual; -- 结果:'ellophp'

-- 去除右侧的 'h'
SELECT RTRIM('hellophph', 'h') FROM dual; -- 结果:'hellophp'

(8)字符串补齐

  • LPAD:在字符串左侧补齐指定字符。
  • RPAD:在字符串右侧补齐指定字符。
1
2
3
4
5
-- 在左侧补齐 '*',使字符串长度为 5
SELECT LPAD('90', 5, '*') FROM dual; -- 结果:'***90'

-- 在右侧补齐 '*',使字符串长度为 5
SELECT RPAD('90', 5, '*') FROM dual; -- 结果:'90***'

(9)字符串替换

  • REPLACE:替换子字符串。
  • TRANSLATE:一对一替换字符。
1
2
3
4
5
-- 替换子字符串
SELECT REPLACE('Hello, C++', 'C++', 'Java') FROM dual; -- 结果:'Hello, Java'

-- 一对一替换字符
SELECT TRANSLATE('ilovegaoyuanyuan', 'yg', '-*') FROM dual; -- 结果:'ilove-ao*u*uan'

3. 综合示例

以下是一些综合示例,展示了字符型单行函数的实际应用。

(1)员工名字的首字母大写

1
2
3
4
5
-- 查询部门编号为 10 的员工名字,并将首字母大写
SELECT ename, INITCAP(ename)
FROM tmp_emp
WHERE deptno = 10
ORDER BY ename;

(2)员工名字的后三个字符

1
2
3
-- 查询员工名字及其后三个字符
SELECT ename, SUBSTR(ename, -3)
FROM tmp_emp;

总结

  1. 随机数生成dbms_random.value()
  2. 字符与 ASCII 码转换ASCIICHR
  3. 大小写转换LOWERUPPERINITCAP
  4. 字符串连接CONCAT||
  5. 字符串截取SUBSTR
  6. 字符串长度LENGTH
  7. 字符串查找INSTR
  8. 字符串修剪TRIMLTRIMRTRIM
  9. 字符串补齐LPADRPAD
  10. 字符串替换REPLACETRANSLATE

SQL 字符型单行函数
https://blog.pangcy.cn/2018/09/05/数据库相关/Oracle/SQL 语法/SQL 字符型单行函数/
作者
子洋
发布于
2018年9月5日
许可协议