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. ISNULLCOALESCE,NULLIFIFF 判断、比较函数
    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
 
 
 
posted @ 2020-10-10 09:15  人生黑色  阅读(585)  评论(0)    收藏  举报