首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server中自定义函数:用指定的分隔符号分割字符串

微软SQL Server数据库中包含了很多内置的函数,入下图: ? ? 它们用于处理日期、数学、元数据、字符串等。...其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用。...但是对于 特殊字符串的处理,比如:ISBN号 '978-7-5007-7234-7',如果想获取第三个与第四个分割符号之间的数字, 那么SQL 内置函数无法直接做到。这时就需要自定义函数。...下面自定义三个函数,用于处理特殊的字符串。 一、按指定符号分割字符串,返回分割后的元素个数 1 ALTER FUNCTION [dbo]....37 --2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。

4.3K10

mysql中find_in_set()函数的使用

”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N...如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。...总结:like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。...”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N...如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

3.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySql字符串拆分实现split功能(字段分割转列、转行)

    字符串转多行 需求描述 实现的sql 案例演示 字符串拆分: SUBSTRING_INDEX(str, delim, count) 替换函数:replace( str, from_str,...扩展:判断外部值是否在 num列值中 find_in_set instr 字符串转多列 需求描述 数据库中 num字段值为: 实现的效果:需要将一行数据变成多行 实现的sql SELECT...('7654,7698,7782,7788',',',-2); 所以,我们的核心代码中的 -1 ,就是获取以逗号为分隔符的最后一个值;也就是7788 替换函数:replace( str, from_str...) 最终成功实现了以下效果 ~ 扩展:判断外部值是否在 num列值中 【5.1】find_in_set 如果匹配到了会得出1;如下图 实际业务中,我们只需要 where find_in_set...但这有一个问题,如果逗号分隔开的字符串,包含我们查找的字符串,也会显示出来,这就不符合我们 根据分隔符 , 判断 查找字符串id 是否出现在 ids 中; 如下: 我们本来想查以逗号为分隔的完全匹配

    15.8K70

    mysql find_in_set学习

    FIND_IN_SET 是 MySQL 中的一个内置函数,用于在一个逗号分隔的字符串列表中查找某个值,并返回其在列表中的位置。...string_list 是一个逗号分隔的字符串列表。如果 search_value 在 string_list 中找到,则返回其在列表中的位置(从1开始计数)。...如果 search_value 或 string_list 为 NULL,则返回 NULL。注意事项如果 search_value 包含逗号(,),FIND_IN_SET 函数将无法正常工作。...:2-- 查找字符串 '6' 在列表 '1' 中的位置SELECT FIND_IN_SET('6', '1'); -- 结果:0应用场景FIND_IN_SET 函数通常用于以下场景:当数据以逗号分隔的字符串形式存储时...在 WHERE 子句中筛选包含特定值的记录。连接表,当需要根据逗号分隔的字符串列表进行关联时。

    12010

    MySQL find_in_set函数的深入解析与应用

    在数据库操作中,我们经常会遇到需要处理以逗号分隔的字符串,并且需要根据这些字符串进行查询的情况。MySQL提供了一个非常实用的函数FIND_IN_SET()来处理这种特定的查询需求。...FIND_IN_SET()是MySQL中的一个字符串函数,用于搜索一个字符串在另一个逗号分隔的字符串列表中的位置。如果找到匹配,它返回一个大于0的整数表示位置,否则返回0。...函数的基本语法如下: FIND_IN_SET(str, strlist) 其中,str是要查找的字符串,strlist是逗号分隔的字符串列表。...FIND_IN_SET()的使用场景 假设我们有一个用户表users,其中有一个字段hobbies记录了用户的爱好,爱好之间用逗号分隔。...()是一个非常方便的函数,可以帮助我们快速地查询出在逗号分隔的字符串列表中查找特定字符串的需求。

    1.1K10

    mysql介绍+php效率常识

    那们我们如何用sql查找所有type中有4图文标准的文章呢, 这就要我们的find_in_set出马的时候到了....先看mysql手册中find_in_set函数的语法: FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N...如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。...(‘4′,TYPE) 备注:原认为FIND_IN_SET函数只能适用于set类型的字段,经过测试,发现,此函数可以适用于所有非数字类型的字段,但是存储的数据必须是已逗号隔开的。...因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号

    2.9K90

    同事问我MySQL怎么递归查询,我懵逼了...

    find_in_set 函数 函数语法:find_in_set(str,strlist) str 代表要查询的字符串 , strlist 是一个以逗号分隔的字符串,如 ('a,b,c')。...我想,是不是可以找到一个包含当前节点和所有子节点的以逗号拼接的字符串 strlist,传进 find_in_set 函数。就可以查询出所有需要的递归数据了。...三、group_concat 函数更强大,可以分组的同时,把字段以特定分隔符拼接成字符串。...若没有指定,默认以逗号分隔。 对于 dept 表,我们可以把表中的所有 id 以逗号拼接。(这里没有用到 group by 分组字段,则可以认为只有一组) ?...这里定义的 ids 即作为整个函数的返回值,是用来拼接成最终我们需要的以逗号分隔的递归串的。 而 tempids 是为了记录下边 while 循环中临时生成的所有子节点以逗号拼接成的字符串。

    3K20

    MySQL 如何实现递归查询?「建议收藏」

    find_in_set 函数 函数语法:find_in_set(str,strlist) str 代表要查询的字符串 , strlist 是一个以逗号分隔的字符串,如 (‘a,b,c’)。...我想,是不是可以找到一个包含当前节点和所有子节点的以逗号拼接的字符串 strlist,传进 find_in_set 函数。就可以查询出所有需要的递归数据了。...三、group_concat 函数更强大,可以分组的同时,把字段以特定分隔符拼接成字符串。...若没有指定,默认以逗号分隔。 对于 dept 表,我们可以把表中的所有 id 以逗号拼接。...这里定义的 ids 即作为整个函数的返回值,是用来拼接成最终我们需要的以逗号分隔的递归串的。 而 tempids 是为了记录下边 while 循环中临时生成的所有子节点以逗号拼接成的字符串。

    11.6K10

    mysql 数据库中的三种判断是否包含总结

    应用场景: 1:在使用mysql数据库进行存储数据的时候,有时候,一个字段,要存储使用逗号分隔的多个数据,在查询的时候,传递的是一个keyword,需要在逗号分隔的字段中进行查询,这种情况怎么处理?...比如: 在爬虫爬取的时候,指定关键字查询,关键字可以是多个用逗号分隔。数据库中对应的字段是:key_word,存储的数据,比如:凯哥Java,kaigejava这样的。...我就想要【理财】这个keyword的数据。这样多数据中精确查询怎么解决?...请看下: 解决方案二: 利用MySQL 字符串函数 find_in_set(); 具体sql语句: SELECT t.config_sentiment_web_url url,t.config_sentiment_keyword...需要注意的是:在mysql中字符串连接不是使用【+】而是使用【concat函数】

    1.9K60

    MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH

    数据库版本:MySql 5.7 FIND_IN_SET 定义: 在逗号分隔的字符串列表中查找指定字符串的位置 FIND_IN_SET(str,strlist) FIND_IN_SET()函数接受两个参数...第二个参数strlist是要搜索的逗号分隔的字符串列表 FIND_IN_SET()函数根据参数的值返回一个整数或一个NULL值: 如果str或strlist为NULL,则函数返回NULL值。...IF函数 定义: IF函数根据条件的结果为true或false,true 返回第一个值,false返回第二个值。...NULLIF(exper1,exper2) 字符串函数 SUBSTR SUBSTR (str, pos) 截取从pos位置开始到最后的所有str字符串,mysql中的start是从1开始的 SUBSTR...有负号的时候,可以将整个字符倒过来看,依旧是第N个字符前面的部分 CONCAT 定义: 将多个字符串合并为一个字符串 LENGTH 定义: 返回字符串的长度,一个汉字是算三个字符,一个数字或字母算一个字符

    1.5K10

    MySQL数据库:第十六章:sql高级函数

    我最常用的一个函数是FIND_IN_SET逗号分隔的list列表 SELECT ID,FID,APP_CODE,PARAM_VALUE,PARAM_TEXT,PARAM_SCHEAME,SHOWORDER...MAX(col)返回指定列的最大值 SUM(col)返回指定列的所有值之和 GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果 三、字符串函数 ASCII(char)返回字符的...)分析逗号分隔的list列表,如果发现str,返回str在list中的位置 LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果 LEFT(str,x)返回字符串str...(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果 四、日期和时间函数 CURDATE()或CURRENT_DATE() 返回当前的日期 CURTIME()或CURRENT_TIME...MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。

    68630

    C++有默认参数的函数 | 求2个或3个中的最大数

    C++有默认参数的函数 在函数调用时形参从实参获取值,因为实参的个数要和形参相同,但有时需要多次调用同一函数,因此C++提供了一个简单的处理办法,给形参一个默认值。...这样形参就不必一定要从实参取值了,如下函数声明: int Area(int area=10); 指定area的默认值为10,如果在调用此函数时,确认area的值为10,则可以不必给出实参的值,如: Area...经典案例:C++求2个或3个正整数中的最大数,要求使用默认参数。...,int num3)//函数定义  {   if(num2>num1)//把较大的数赋值给num1    {     num1=num2;   }   if(num3>num1)//把较大的数赋值给num1...C++求2个或3个中的最大数 更多案例可以go公众号:C语言入门到精通

    1.4K2828

    MySQL的复杂数据类型,学会使用再也不怕复杂场景了、枚举(ENUM)、集合(SET)、JSON、空间数据类型

    插入数据 向集合类型列插入数据时,可以插入一个或多个值,值之间用逗号分隔。...traveling'); -- 插入空集合(即不指定任何值) INSERT INTO users (name, hobbies) VALUES ('Charlie', ''); 查询数据 查询集合类型列时,返回的结果也是逗号分隔的字符串...集合中的值不能包含逗号,因为逗号用作分隔符。 集合中的值最多可以有64个,这是MySQL的限制。 空字符串(‘’)被视为一个有效的集合值,表示没有选择任何选项。...JSON_ARRAY_APPEND函数用于向JSON数组中添加元素,JSON_CONTAINS函数用于检查JSON文档中是否包含特定的值或对象,JSON_REMOVE函数用于从JSON文档中删除指定的值或对象...,坐标之间用逗号 , 分隔,并且纬度在前,经度在后。

    17310

    使用Mysql中的concat函数或正则匹配来快速批量生成用于执行的sql语句

    实例演示 以下面的场景作为示例进行讲解: 学生表: 一张简单的学生表,其中记录了学生ID、名称、班级ID 借阅表: 一张简单的借阅表,当中记录了借阅的书籍和对应借阅学生ID,但是每行中的学生名称和班级...目标:快速生成update语句将book_borrow表中的student_name和class_id更新为正确的数据。...; 把update需要用的变量全部使用select查询出来。即,根据book_borrow表中的student_id,去student表中查出name和class_id。 select a.id,b....即,借阅ID、学生名称、班级ID,那么下一步我们只需要通过concat函数进行字符串拼接就可以了。...,如下图所示: 最后我们把sql拷出来直接执行就可以了。

    99810

    DorisSQL与MySQL函数与语法对照差异篇

    MINUTE(DATETIME date) doris -> MINUTE(DATETIME date) 将整数表达式间隔添加到日期或日期时间表达式datetime_expr中 mysql -> TIMESTAMPADD...(DATETIME date) doris -> YEAR(DATETIME date) 2.字符串函数 返回字符串的长度,对于多字节字符,返回字符数. mysql -> char_length(VARCHAR...strlist 是用逗号分隔的字符串. mysql -> find_in_set(VARCHAR str, VARCHAR strlist) doris -> find_in_set(VARCHAR str...该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串. mysql -> group_concat(VARCHAR str[, VARCHAR sep...str) doris -> lower(VARCHAR str) 将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位. doris -> money_format(Number)

    5.4K40

    MySQL中FIND_IN_SET探险记

    ,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,查找资料后发现涉及到数据库的特有函数,候mysql的FIND_IN_SET函数就派上用场了,下面来具体了解一下...其实where 类似于 if 就是对条件的判断,返回 true or false。在检索过程中,将满足条件的,即条件为true的结果返回。...FIND_IN_SET(str,strlist) 第一个参数str是要查找的字符串。 第二个参数strlist是要搜索的逗号分隔的字符串列表。...贴图: SELECT FIND_IN_SET(1,1) ? 刚说好的字符串,你就给我来个这 ? ? ? ,mysql你怎么可以这么随意呢! ? ? ? 以上图示,有劳读友自行总结 ? ? ?...5、FIND_IN_SET和like的区别 like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果

    1.9K10

    【重学 MySQL】三十一、字符串函数

    【重学 MySQL】三十一、字符串函数 函数名称 用法描述 ASCII(S) 返回字符串S中的第一个字符的ASCII码值 CHAR_LENGTH(s) 返回字符串s的字符数,与CHARACTER_LENGTH...,str) 或 POSITION(substr IN str) 或 INSTR(str,substr) 返回字符串substr在字符串str中首次出现的位置,未找到返回0 ELT(m,s1,s2,…,sn...) 返回指定位置的字符串,如果m=1,则返回s1,如果m=2,则返回s2,依此类推 FIELD(s,s1,s2,…,sn) 返回字符串s在字符串列表中第一次出现的位置 FIND_IN_SET(s1,s2...) 返回字符串s1在由逗号分隔的字符串s2中出现的位置 REVERSE(s) 返回s反转后的字符串 NULLIF(value1,value2) 如果value1与value2相等,则返回NULL,否则返回...举例: 示例SQL 结果 SELECT FIELD('mm','hello','msm','amma'),FIND_IN_SET('mm','hello,mm,amma') FROM DUAL; 0,

    10010
    领券