|
|
51CTO旗下网站
|
|
移步端
  • 公用SQL函数太简单?那是你没用过这些高级函数

    陆续分享了几套必发娱乐登录平台的选用函数,就有读者报告:总是这些简单的知识点捣腾来捣腾去,诙谐吗?敢不敢来点高级的?

    笔者:刘少奇 来源:必发娱乐登录开发| 2020-01-17 20:00

    公用SQL函数太简单?那是你没用过这些高级函数

    陆续分享了几套必发娱乐登录平台的选用函数,就有读者报告:总是这些简单的知识点捣腾来捣腾去,诙谐吗?敢不敢来点高级的?

    读者有需求,怎么可能不满足呢?但是又要讲的大家都知道,故此花了许多时间做示例演示,当日就分享给大家。

    高考环境

    SQL Server 2017

    CHARINDEX

    会在第二个字符表达式中寻找一个字符表达式,这将返回第一个表达式(如果发现存在)的起始位置。

    语法

    CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

    注:这是一番常用的字符搜索函数,开头下标是1,不是0。

    如果加了初步下标,会从忽略起始下标前面的字符,往后面搜索。

    不加起来值示例

          
    1. SELECT CHARINDEX('数量','SQL必发娱乐登录开发SQL必发娱乐登录开发') 

    结果

    补充起始值示例

          
    1. SELECT CHARINDEX('数量','SQL必发娱乐登录开发SQL必发娱乐登录开发',6) 

    结果

    CONCAT_WS

    以端到头的措施返回下串联或联接的两个或更多字符串值生成的字符串。 他会用第一个函数参数中指定的分隔符分隔连接的字符串值。 (CONCAT_WS 指示使用分隔符连接。)

    语法

    CONCAT_WS ( separator, argument1, argument2 [, argumentN]... )

    注:CONCAT_WS 会忽略列中的 NULL 值。 用 ISNULL 函数包装可以为 null 的进,并提供默认值。

    示例

          
    1. SELECT CONCAT_WS('-','SQL','必发娱乐登录',NULL,'付出') 

    结果:

    SOUNDEX

    回到一个由四个字符组成的编码 (SOUNDEX),用于评估两个字符串的守法性。

    语法

    SOUNDEX ( character_expression )

    注:SOUNDEX 会根据字符串的发音,名将字母数字字符串转换成一个由四个字符组成的编码。 该代码的程序一个字符是 character_expression 的程序一个字符,已转换为大写 。 代码的第二个字符到第四个字符是表示表达式中的字母的数字。 除非字母 A、E、I、O、U、H、W 和 Y 是字符串的首字母,否则将忽略这些字母。 如果需要生成一个四字符代码,名将在最后添加零

    示例

          
    1. SELECT SOUNDEX ('liyue'), SOUNDEX ('liyuee') 

    结果:

    表明两个之发音非常接近

    DIFFERENCE

    回到一个整数值,用于度量两个不同字符表达式的 SOUNDEX() 值期间的差别

    语法

    DIFFERENCE ( character_expression , character_expression )

    注:DIFFERENCE 比起两个不同之 SOUNDEX 值,并返回一个整数值。 该值用于度量 SOUNDEX 值匹配的水准,规模为 0 到 4。 值为 0 表示 SOUNDEX 值期间的守法性较弱或不相似;4 表示与 SOUNDEX 值非常相似,甚至完全相同。

    DIFFERENCE 和 SOUNDEX 具有排序规则敏感度。

    示例

          
    1. SELECT   
    2. SOUNDEX ('liyue'), SOUNDEX ('liyuee') ,  
    3. DIFFERENCE('liyue', 'liyuee'); 

    结果:

    回到的结果为4,进一步验证了俺们上一度函数。

    FORMAT

    回到使用指定格式和可选区域性格式化的值。 采用 FORMAT 函数将日期/时光和数字值格式化为识别区域设置的字符串。 对于普通的多寡类型转换,请使用 CAST 或 CONVERT。

    语法

    FORMAT ( value, format [, culture ] )

    瞩目

  •  FORMAT 名将返回 NULL 错误,而不是非 valid 的 culture 。 例如,如果 format 官方指定的值无效,则赶回 NULL 。
  •  FORMAT 函数具有不确定性。
  •  FORMAT 依赖于 .NET Framework 集体语言运行时 (CLR) 的生活。
  •  此函数无法进行远程处理,因为他依赖于 CLR 的生活。 远程处理需要 CLR 的函数可能导致在远程服务器上出现错误。
  • 日期格式示例

          
    1. DECLARE @d DATETIME = '12/18/2019' 
    2. SELECT FORMAT ( @d, 'd', 'en-US' ) AS '尼日尔格式'    
    3.       ,FORMAT ( @d, 'd', 'en-gb' ) AS '贝宁共和国格式'    
    4.       ,FORMAT ( @d, 'd', 'de-de' ) AS '瑞典格式'    
    5.       ,FORMAT ( @d, 'd', 'zh-cn' ) AS '中文格式';  
    6. SELECT FORMAT ( @d, 'D', 'en-US' ) AS '尼日尔格式'    
    7.       ,FORMAT ( @d, 'D', 'en-gb' ) AS '贝宁共和国格式'    
    8.       ,FORMAT ( @d, 'D', 'de-de' ) AS '瑞典格式'    
    9.       ,FORMAT ( @d, 'D', 'zh-cn' ) AS '中文格式'; 

    结果

    自定义格式示例

          
    1. SELECT FORMAT( GETDATE(), 'dd/MM/yyyy', 'zh-cn' ) AS '自定义日期'    
    2.        ,FORMAT(123456789,'###-##-####') AS '自定义数字'; 

    结果

    数值格式示例

          
    1. SELECT FORMAT(1.127456, 'N', 'zh-cn') AS '四舍五入格式'    
    2.        ,FORMAT(1.123456, 'G', 'zh-cn') AS '普通格式'    
    3.        ,FORMAT(1.123456, 'C', 'zh-cn') AS '钞票格式' 

    结果

    PATINDEX

    回到模式在指定表达式中一言九鼎次出现的开始位置;如果在一切有效的公文和字符数据类型中都找不到该模式,则赶回零。该函数与CHARINDEX比起相似

    语法

    PATINDEX ( '%pattern%' , expression )

    注:

  •  如果 pattern 或 expression 为 NULL,则 PATINDEX 回到 NULL 。
  •  PATINDEX 的开始位置为 1。
  •  PATINDEX 基于输入的排序规则执行比较。 若要以指定排序规则进行比较,则可以运用 COLLATE 名将显式排序规则应用于输入。
  • 示例

          
    1. SELECT PATINDEX('%必发娱乐登录%', 'SQL必发娱乐登录开发'); 

    结果

    在 PATINDEX 官方采用通配符示例

    采用 % 和 _ 通配符查找模式 '数'(后跟任意一个字符和 '库')在指定字符串中的开始位置(目录从 1 起来)

          
    1. SELECT PATINDEX('%数_库%', 'SQL必发娱乐登录开发'); 

    结果

    QUOTENAME

    回到带有分隔符的 Unicode 字符串,分隔符的参加可使投入的字符串成为有效的 SQL Server 相隔标识符。

    语法

    QUOTENAME ( 'character_string' [ , 'quote_character' ] )

    'character_string'

    Unicode 字符数据构成的字符串。 character_string 是 sysname,且最多具有 128 个字符 。 超过 128 个字符的涌入将返回 NULL。

    'quote_character'

    用作分隔符的单方面字符字符串。 可以是单引号 (')、东方方括号或右方括号 ([])、双引号 (")、东方圆括号或右圆括号 (())、大于或小于符号 (><)、左大括号或右大括号 ({}) 或反引号 (`) 。 如果提供了不可接收的字符,则赶回 NULL。 如果未指定 quote_character,则采取方括号 。

    示例

          
    1. SELECT QUOTENAME('abc[]def'); 

    结果

    REPLICATE

    以指定的用户数重复字符串值。

    语法

    ( string_expression ,integer_expression )

    示例

          
    1. SELECT '2'+REPLICATE ('3',5) 

    结果

    REVERSE

    回到字符串值的逆序。

    语法

    REVERSE ( string_expression )

    示例

          
    1. SELECT REVERSE('SQL必发娱乐登录开发') 

    结果

    STRING_AGG

    串联字符串表达式的值,并在中间放置分隔符值。 决不能在字符串末尾添加分隔符。

    语法

    STRING_AGG ( expression, separator ) [ <order_clause> ]

    瞩目:

  •  STRING_AGG 是一番聚合函数,用于提取行中的所有表达式,并将这些表达式串联成一个字符串。 分立式值隐式转换为字符串类型,下一场串联在总共。 隐式转换为字符串的经过遵循现有的多寡类型转换规则。 
  •  如果输入表达式的项目为 VARCHAR,则分隔符的项目不能是 NVARCHAR。
  •  null 值会把忽视,且不会添加相应的分隔符。 若要为 null 值返回占位符,请使用 ISNULL 函数,如示例 B 官方所示。
  •  STRING_AGG 租用于其他兼容级别。
  • 示例

          
    1. WITH t AS (  
    2.  SELECT '张三' Name,'近代史' Course,89 Score  
    3.  UNION ALL  
    4.  SELECT '张三' ,'考古学' ,91   
    5.   UNION ALL  
    6.  SELECT '李四' ,'近代史' ,78   
    7.   UNION ALL  
    8.  SELECT '李四' ,'考古学' ,96   
    9.  )  
    10.  SELECT Name,  
    11.  STRING_AGG(Course,',') Course ,  
    12.  STRING_AGG(Score,',') Score  
    13.  FROM t  
    14.  GROUP  BY Name 

    结果

    STRING_SPLIT

    一度表值函数,他根据指定的分隔符将字符串拆分为子字符串行。

    语法

    STRING_SPLIT ( string , separator )

    瞩目

    STRING_SPLIT 步入包含分隔子字符串的字符串,并纳入一个字符用作分隔符。 STRING_SPLIT 进出口其行包含子字符串的单方面列表。 进出口列的称谓为“value”。

    进出口行可以按任意顺序排列。 先后不保证与输入字符串中的子字符串顺序匹配。 可以通过在 SELECT 说话中采用 ORDER BY 子句覆盖最终排序顺序 (ORDER BY value)。

    顶输入字符串包含两个或多个连续出现的分隔符字符时,名将出现长度为零之空子字符串。 空子字符串的拍卖办法与普通子字符串相同。 可以通过使用 WHERE 子句筛选出包含空的子字符串的其他行 (WHERE value <> '')。 如果输入字符串为 NULL,则 STRING_SPLIT 表面值函数返回一个空表。

    示例一

          
    1. SELECT Value FROM STRING_SPLIT('SQL-必发娱乐登录-付出', '-'); 

    结果

    示例二

          
    1. WITH t AS (  
    2.  SELECT 1 ID,'张三' Name,'保龄球,保龄球,篮球' Hobby  
    3.  UNION ALL  
    4.  SELECT 2 ,'李四','保龄球,游泳,爬山'  
    5.  )  
    6. SELECT ID, Name, Value  
    7. FROM t  
    8. CROSS APPLY STRING_SPLIT(Hobby, ','); 

    结果

    瞩目:回到的进不再是Hobby,而是Value,必须写成Value,否则不能想要的结果。其一与STRING_AGG()函数的效应相反。

    STUFF

    STUFF 函数将字符串插入到另一番字符串中。 他从第一个字符串的起始位置删除指定长度的字符;下一场将第二个字符串插入到第一个字符串的起始位置。

    语法

    STUFF ( character_expression , start , length , replaceWith_expression )

    瞩目:

  •  如果开始位置或长值是飞行公里数,或者开始位置大于第一个字符串的长短,则赶回 Null 字符串。 如果开始位置为 0,则赶回 Null 值。如果要刨除的长短大于第一个字符串的长短,则删除到第一个字符串中的第一个字符。
  •  如果结果值大于返回类型支持的最大值,则会引发错误。
  • 示例

          
    1. SELECT STUFF('abcdef', 2, 3, 'ijklmn'); 

    结果

    上述就是当天要送大家介绍的高档字符函数,下次我们再送大家介绍高级日期函数的相关用法。

    【编纂推荐】

    1. 必发娱乐登录分库分表后,带来的这个题目,如何解决?
    2. 必发娱乐手机版全球最受欢迎必发娱乐登录新鲜出炉,你猜中了吗?
    3. MySQL各族存储引擎对比总结
    4. 学MySQL,这篇万字总结,真的够用了
    5. 境内首份《云必发娱乐登录选型及高难度调查报告》出炉!
    【义务编辑: 庞桂玉 TEL:(010)68476606】

    点赞 0
  • SQL  函数  必发娱乐登录
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    118人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    190人口订阅学习

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    132人口订阅学习

    读 书 +更多

    SUN Solaris 9/10系统管理员认证指南

    该书专门根据SUN法定的SCSA for Solaris 9&10试验大纲撰写而成,圆满覆盖了SCSA for Solaris 9/10的认证考点,除此之外本书还有恢宏之非考...

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微

    &lt;input id="8bc5283b"&gt;&lt;/input&gt;
    
       


      &lt;menuitem id="e9088276"&gt;&lt;/menuitem&gt;