陆续分享了几套数据库平台的常用常用函数,就有读者反映:总是函函数这些简单的知识点捣腾来捣腾去,有意思吗?数太敢不敢来点高级的? 读者有需要,怎么可能不满足呢?简单但是又要讲的大家都明白,所以花了不少时间做示例演示,那没今天就分享给大家。用过 测试环境 SQL Server 2017 CHARINDEX 作用 会在第二个字符表达式中搜索一个字符表达式,高级这将返回第一个表达式(如果发现存在)的常用开始位置。 语法 CHARINDEX ( expressionToFind ,函函数 expressionToSearch [ , start_location ] ) 注:这是一个常用的字符搜索函数,起始下标是数太1,不是简单0。 如果加了起始下标,那没会从忽略起始下标前面的用过字符,往后面搜索。高级 不加起始值示例 结果 添加起始值示例 结果 CONCAT_WS 作用 以端到端的方式返回从串联或联接的两个或更多字符串值生成的字符串。 它会用第一个函数参数中指定的分隔符分隔连接的字符串值。 (CONCAT_WS 指示使用分隔符连接。云服务器提供商) 语法 CONCAT_WS ( separator, argument1, argument2 [, argumentN]... ) 注:CONCAT_WS 会忽略列中的 NULL 值。 用 ISNULL 函数包装可以为 null 的列,并提供默认值。 示例 结果: SOUNDEX 作用 返回一个由四个字符组成的代码 (SOUNDEX),用于评估两个字符串的相似性。 语法 SOUNDEX ( character_expression ) 注:SOUNDEX 会根据字符串的发音,将字母数字字符串转换成一个由四个字符组成的代码。 该代码的第一个字符是 character_expression 的第一个字符,已转换为大写 。 代码的第二个字符到第四个字符是表示表达式中的字母的数字。 除非字母 A、E、I、O、U、H、W 和 Y 是字符串的首字母,否则将忽略这些字母。香港云服务器 如果需要生成一个四字符代码,将在末尾添加零 示例 结果: 说明两个的发音非常接近 DIFFERENCE 作用 返回一个整数值,用于度量两个不同字符表达式的 SOUNDEX() 值之间的差异 语法 DIFFERENCE ( character_expression , character_expression ) 注:DIFFERENCE 比较两个不同的 SOUNDEX 值,并返回一个整数值。 该值用于度量 SOUNDEX 值匹配的程度,范围为 0 到 4。 值为 0 表示 SOUNDEX 值之间的相似性较弱或不相似;4 表示与 SOUNDEX 值非常相似,甚至完全相同。 DIFFERENCE 和 SOUNDEX 具有排序规则敏感度。 示例 结果: 返回的结果为4,进一步验证了我们上一个函数。 FORMAT 作用 返回使用指定格式和可选区域性格式化的值。 使用 FORMAT 函数将日期/时间和数字值格式化为识别区域设置的字符串。 对于一般的数据类型转换,请使用 CAST 或 CONVERT。 语法 FORMAT ( value, format [, culture ] ) 注意 日期格式示例 结果 自定义格式示例 结果 数值格式示例 结果 PATINDEX 作用 返回模式在指定表达式中第一次出现的起始位置;如果在所有有效的文本和字符数据类型中都找不到该模式,则返回零。该函数与CHARINDEX比较相似 语法 PATINDEX ( %pattern% , expression ) 注: 示例 结果 在 PATINDEX 中使用通配符示例 使用 % 和 _ 通配符查找模式 数(后跟任意一个字符和 库)在指定字符串中的开始位置(索引从 1 开始) 结果 QUOTENAME 作用 返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 SQL Server 分隔标识符。 语法 QUOTENAME ( character_string [ , quote_character ] ) 注 character_string Unicode 字符数据构成的字符串。 character_string 是 sysname,且最多具有 128 个字符 。 超过 128 个字符的输入将返回 NULL。 quote_character 用作分隔符的单字符字符串。 可以是单引号 ()、左方括号或右方括号 ([])、双引号 (")、左圆括号或右圆括号 (())、大于或小于符号 (><)、左大括号或右大括号 ({ }) 或反引号 (`) 。 如果提供了不可接受的字符,则返回 NULL。 如果未指定 quote_character,则使用方括号 。 示例 结果 REPLICATE 作用 以指定的次数重复字符串值。 语法 ( string_expression ,integer_expression ) 示例 结果 REVERSE 作用 返回字符串值的逆序。 语法 REVERSE ( string_expression ) 示例 结果 STRING_AGG 作用 串联字符串表达式的值,并在其间放置分隔符值。 不能在字符串末尾添加分隔符。 语法 STRING_AGG ( expression, separator ) [ <order_clause> ] 注意: 示例 结果 STRING_SPLIT 作用 一个表值函数,它根据指定的分隔符将字符串拆分为子字符串行。 语法 STRING_SPLIT ( string , separator ) 注意 STRING_SPLIT 输入包含分隔子字符串的字符串,并输入一个字符用作分隔符。 STRING_SPLIT 输出其行包含子字符串的单列表。 输出列的名称为“value”。 输出行可以按任意顺序排列。 顺序不保证与输入字符串中的子字符串顺序匹配。 可以通过在 SELECT 语句中使用 ORDER BY 子句覆盖最终排序顺序 (ORDER BY value)。 当输入字符串包含两个或多个连续出现的分隔符字符时,将出现长度为零的空子字符串。 空子字符串的处理方式与普通子字符串相同。 可以通过使用 WHERE 子句筛选出包含空的子字符串的任何行 (WHERE value <> )。 如果输入字符串为 NULL,则 STRING_SPLIT 表值函数返回一个空表。 示例一 结果 示例二 结果 注意:返回的列不再是Hobby,而是Value,必须写成Value,否则得不到想要的结果。这个与STRING_AGG()函数的功能相反。 STUFF 作用 STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。 语法 STUFF ( character_expression , start , length , replaceWith_expression ) 注意: 示例 结果 以上就是今天要给大家介绍的高级字符函数,下次我们再给大家介绍高级日期函数的相关用法。