SQL 10 常用字符串操作方法
1. CONCAT 字符串连接函数
CONCAT的两个优点 :
(1).当数据类型不一致的时候可以自动类型转换 ;(2).对于null的处理,自动将null转换成‘’ 。
SELECT CONCAT('CONCAT',null,'是个','很好用的','字符串连接函数') --[CONCAT是个很好用的字符串连接函数] (多字段连接)
--SQL SERVER 2017 新增特性
SELECT CONCAT_WS(' - ','CONCAT_WS',NULL,'是个','很好用的','字符串连接函数') --[CONCAT_WS - 是个 - 很好用的 - 字符串连接函数](多字段连接并间隔)
--SQL SERVER 2017 新增特性
SELECT STRING_AGG(NAME,',') FROM TEST3 WHERE Id <10 --NAME1,NAME2,NAME3,NAME4,NAME5,NAME6,NAME7,NAME8,NAME9(多行拼接为一行)
2. CHOOSE 字符串选择函数
CHOOSE可以从值列表返回指定索引处的项 。CHOOSE的主要功能和CASE WHEN类似, 例如数据库中有字段SEX: 1表示男, 2表示女。
SELECT CHOOSE (@SEX ,'男', '女') AS SEX
3. QUOTENAME(),REPLICATE(),REVERSE(),REPLACE(),SPACE(),STUFF() 字符串操作函数
DECLARE @MOBILE VARCHAR(11) = '18311113926' --[183****3926];STUFF:从第N个位置,取字符长度为M,替换为****
SELECT @MOBILE AS custMobile, STUFF(@MOBILE, 4, 4, '****') AS custMobile1, CONCAT(SUBSTRING(@MOBILE,1,3), '****', SUBSTRING(@MOBILE,8,4)) AS custMobile2
--SQL SERVER 2017 新增特性(TRANSLATE)
SELECT REPLACE(TRIM(TRANSLATE('123#456*789!/0', '#*!/', ' ')), ' ', '');--TRANSLATE避免了多次REPLACE,现将字符转换成同样的字符,然后全部替换。
SELECT REPLACE(REPLACE(REPLACE(REPLACE('123#456*789!/0', '#', ''), '*', ''), '!', ''), '/', ''); --与上语句等效
SELECT QUOTENAME('ABCD'); -- 字符串两端加符号[](默认)
SELECT QUOTENAME('ABCD', '[]'),QUOTENAME('ABCD', '<>'),QUOTENAME('ABCD', '{}'),QUOTENAME('ABCD', '()'), QUOTENAME('ABCD', ''''); -- 字符串两端加符号[],<>,{},(),''
SELECT REPLICATE('ABCD ', 4); -- 字符串重複N次 ABCD ABCD ABCD ABCD
SELECT REVERSE('ABCDEF'); -- 倒序,反转 FEDCBA
SELECT 'A' + SPACE(4) + 'A'; --四个空格 A A
4. ISNULL,COALESCE,NULLIF,IFF 判断、比较函数
SELECT ISNULL (null, 'abc' ) --第一个值不为空取第一个,否则为第二个
SELECT COALESCE(null,null, 'abc'), COALESCE(null, 'a' , 'abc' )--返回第一个非空值
SELECT NULLIF (1 ,1) --两个指定的表达式相等,则返回空值;如果两者不相等,则返回前者。 结果返回 NULL,因两者相等,返回NULL。
SELECT NULLIF (1 ,NULL) --结果返回 1 因两者不等,返回前者
DECLARE @INT INT SET @INT = NULL SELECT NULLIF (@INT ,NULL) --结果返回 NULL 因两者不等,返回前者,前者刚好也是NULL
SELECT IIF (30 > 45, '对' , '错') AS 结果 --结果返回:错
5. @@VERSION,@@LANGUAGE 配置函数
--查看sql server版本
SELECT @@VERSION , @@LANGUAGE
select host_name (), host_id (), user_name(), user_id(), db_name () -- BRUCE 1232 dbo 1 cdcfcu
--查看硬盘分区:
EXEC master .. xp_fixeddrives
6、小数取整
select CEILING (12.1 ) --返回[13] 取大于12.1的最小整数
select FLOOR (12.9 ) --返回[12] 取小于12.9的最大整数
select round (12.77 , 0) --返回[13.00] 四舍五入,0位小数
select round (12.24 , 1) --返回[12.20] 四舍五入,1位小数
7、简单判断是否手机号(是否11位数字)
select count(1) from CtCust where ISNUMERIC(custMobile) = 1 and LEN(custMobile) = 11

浙公网安备 33010602011771号