zoukankan      html  css  js  c++  java
  • MySql中指定符号分割并分行展示

    1.涉及到的函数三个:

    1.1 REPLACE('value','str1','str2')

     用法规则:使用str2替换掉value中的所有的str1;

    SELECT REPLACE('我来了','','')

    执行结果如下:

     1.2 LENGTH(str)

     用法规则:获取字符串的长度,使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节。

    SELECT LENGTH('我来了'),LENGTH('you')

    执行结果如下:

    1.3 SUBSTRING_INDEX(str,delim,count)

     用法规则:substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N(截取数据依据的字符出现的次数))

    如果count是正数则从左往右截取,如果count是负数则从右往左截取,count是从1开始的不存在0,否则查询结果为空;

    SELECT SUBSTRING_INDEX('我,是,菜,鸡',',',1) 
    -- 以第一个逗号为分割,截取第一个字符串

    执行结果如下:

    SELECT SUBSTRING_INDEX('我,是,菜,鸡',',',2)
    -- 以第二个逗号为分割,截取前两个字符串

    执行结果如下:

    SELECT SUBSTRING_INDEX('我,是,菜,鸡',',',-2)
    -- 从右往左数第二个逗号为分割,截取两个字符串

    执行结果如下:

    案例:

    现有一张table1表,表中信息如截图,需要将表中的roles字段中的值按照‘,’分割,并且每个字符串展示为1行:

     实现的sql如下:

    SELECT
        a.owner_type,SUBSTRING_INDEX( SUBSTRING_INDEX( a.roles, ',', b.help_topic_id + 1 ), ',',- 1 ) 
    FROM
        table1 a
        JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.roles ) - LENGTH( REPLACE ( a.roles, ',', '' ) ) + 1 );

    执行结果:

     案例语句分析:

    SUBSTRING_INDEX(SUBSTRING_INDEX(a.roles,',',b.help_topic_id + 1),',',-1)

    在mysql.help_topic表中help_topic_id的值是(0,1,2······N),是从零开始的,SUBSTRING_INDEX(str,delim,count)中的count位置函数必须是从1开始,所以需要(b.help_topic_id + 1)从1开始循环,当help_topic_id 值为0时以上语句取值为第一个字符串,当help_topic_id 值为1是以上语句执行后取第二个字符串,如截图:

    以下sql字段执行结果求的是roles的值可以按照 ' , ' 被分割为多少个字符串:

    (LENGTH(a.roles) - LENGTH(REPLACE(a.roles,',','')) + 1 )

    执行后的结果如截图:

     至于如何使用join进行循环的这里就不多做描述,可以百度下join的使用讲解^-^。。。。。。。

  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/AIHEN/p/13968653.html
Copyright © 2011-2022 走看看