字符串拼接函数 || 将employees表的所有员工的last_name和first_name拼接起来作为Name
将employees表的所有员工的last_name和first_name拼接起来作为Name
http://www.nowcoder.com/practice/6744b90bbdde40209f8ecaac0b0516fe
1 题解Code
select
concat_ws(' ',last_name,first_name)as name
from employees
2 常见字符串拼接函数
2.1 cancat()
函数形式
concat (str1,str2,...)
返回结果为连接所有参数生成的字符串,如果有任何一个参数为NULL,则返回值为NULL
2.2 cancat_ws()
函数形式
concat_ws (seperator,str1,str2,...)
ws(with seperator) seperator为连接各个字符串的分隔符,分隔符可以使一个字符串,也可以是其他参数,当需要将多个字符串用同一分隔符连接时,concat_ws()更为适用
Note:
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。*
Use Case
concat_ws('-','Google','Baidu','Taobao')
-- 输出结果: 'Google-Baidu-Taobao'
等价于:
concat('Google','-','Baidu','-','Taobao')
2.3 || 拼接
Oracle中的concat函数只能拼接两个字符串,多个字符串的拼接需要使用||
函数性质
str1||str2...
Use Case
select 'wk '||retail_week as retail_week
--输出结果:'wk 1' 'wk 2'...
2.4 group concat()
3 拼接过程中的格式转换
部分字段在拼接的过程中会涉及到格式的转换,SQL中常用的格式转换函数为 CAST函数与CONVERT函数
3.1 CAST函数
函数形式
cast(expression as data_type)
- expression:待转换数据类型的有效表达式
- as: 分隔符
- data_type:目标系统所提供的数据类型,不能使用用户定义的数据类型
可转换的数据类型
- 二进制 binary
- 字符型 char() / varchar()
- 时间 TIME
- 日期 DATE
- 日期时间型 DATETIME
- 时间戳 TIMESTAMP
- 浮点数 FLOAT
- 精度可变的浮点数 DECIMAL(m,n) m:总位数 n:小数点后位数
- 布尔值 BOOLEAN
- 整数值 BIGINT/INTh/MEDIUMINT/SMALLINT/TINYINT (数值范围由大到小)
3.2 Convert 函数
函数形式
CONVERT() 函数常作为把日期转换为新数据类型的通用函数,通过style参数的设置可以用不同的格式显示时间/日期,也可转换其他数据
CONVERT(data_type(length),expression,style)
- data_type(length):目标数据类型(可规定长度)
- expression:需要转换的值
- style:规定的日期/时间的展示形式 (转换时间可用)
Use Case
SELECT CONVERT(INT, 25.65);
-- 输出:25
SELECT CONVERT(VARCHAR(19),GETDATE())
-- 输出:'Apr 15 2021' 7:59AM
SELECT CONVERT(VARCHAR(10),GETDATE(),10)
-- 输出:'04-15-21' style=10 对应'mm-dd-yy'