zoukankan      html  css  js  c++  java
  • MySQL文本处理函数

    在MySQL使用中,有时不可避免的使用到文本处理函数。这些函数给数据的处理和转换提供了方便。

    本文用到的表如下

    建表语句,点击查看

    create table departments
    (
        dept_no   char(4)     not null
            primary key,
        dept_name varchar(40) not null,
        constraint dept_name
            unique (dept_name)
    );
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d009', 'Customer Service');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d005', 'Development');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d002', 'Finance');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d003', 'Human Resources');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d001', 'Marketing');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d004', 'Production');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d006', 'Quality Management');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d008', 'Research');
    INSERT INTO employees.departments (dept_no, dept_name) VALUES ('d007', 'Sales');

    常用的文本处理函数:

    函数 说明
    left() 返回串左边的字符
    length() 返回串的长度
    lower() 将串转换为小写
    Ltrim() 去掉串左边的空格
    Right() 返回串右边的字符
    rtrim() 去掉串右边的空格
    soundex() 返回串的soundex值
    substring() 返回串的一个子串
    locate() 找出串的一个子串
    upper() 将串转换为大写

    使用:

    将改表的部门名称字段作为实验字段,验证upper(),lower(),left(),right(),length(),locate() 这几个函数。

    select dept_no,
           dept_name,
           upper(dept_name)        as '转为大写',
           lower(dept_name)        as '转为小写',
           left(dept_name, 4)      as '左边的4个字符',
           right(dept_name, 4)     as '右边的4个字符',
           length(dept_name)       as '字符串的长度',
           locate('an', dept_name) as '文本an出现的位置'
    from departments;

    以下是单独说明LOCATE(),RTRIM(),LTRIM(),substring()这几个函数的用法

    locate()函数是代表,子串在字符串中第一次出现的位置

    mysql> SELECT LOCATE('bar', 'foobarbar');     --查询子串'bar'在字符串'foobarbar'中第一次出现的位置
            -> 4
    mysql> SELECT LOCATE('xbar', 'foobar');      --这是查询子串'xbar'在字符串 'foobar'中出现的位置,因为 没有所以返回0
            -> 0
    mysql> SELECT LOCATE('bar', 'foobarbarbar', 5);  --这是从字符串'foobarbarbar'中第5个位置开始找子串'bar'第一次出现的位置
            -> 7

    利用concat()函数验证rtrim()和ltrim()

    select concat('|',rtrim('  nothing  '),'|',ltrim('  nothing  '),'|');

    运用竖线|做分隔符,验证rtrim函数去除右空格,验证ltrim函数去除左空格。

    subString()函数是截图一个字符串,第一个参数是要被截取的字符串,第二个参数是开始截取的位置,第三个参数是截取的长度如果为空,则代表截取全部

    mysql> SELECT SUBSTRING('Quadratically',5);   --从第5个位置开始截取子串,
            -> 'ratically'
    mysql> SELECT SUBSTRING('foobarbar' FROM 4);   --从第4个位置开始截取子串
            -> 'barbar'
    mysql> SELECT SUBSTRING('Quadratically',5,6);    --从Quadratically这个字符串的第5个的位置开始截取6位的长度
            -> 'ratica'
    mysql> SELECT SUBSTRING('Sakila', -3);  --位置为负数时,代表从右边往左数,-3代表从右数三位,一直到最后
            -> 'ila'
    mysql> SELECT SUBSTRING('Sakila', -5, 3);  --Sakila这个字符串从右往左数5位开始截取3位字符
            -> 'aki'
    mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);   --这个从右往左数4位开始截取2位字符
            -> 'ki'

    soundex()函数将文本串转换为描述其语音表示的字母数字模式的算法,soundex()函数考虑了类似发音字符和音节,使得能对串发音比较而不是字母比较。

    是不是比较难以理解,通俗点说就是soundex()函数比较的时发音,就是发的音是否类似,see和sea的发音就类似,see和sen的发音就不同,这个函数比较的发音的类似性,跟组成单词的字母是无关

    select soundex('san')=soundex('sam') ; 
    select soundex('see')=soundex('sea') ; 
    select soundex('see')=soundex('sen');
    

    生于忧患,死于安乐
  • 相关阅读:
    FFT学习笔记
    FWT(Fast Walsh Transformation)快速沃尔什变换学习笔记
    GMS2游戏开发学习历程
    [BZOJ3238][AHOI2013]差异 [后缀数组+单调栈]
    Trie树简单讲解
    自己的题
    小技巧
    编程注意事项
    构造方法
    递归
  • 原文地址:https://www.cnblogs.com/songlove/p/15521211.html
Copyright © 2011-2022 走看看