MySQL 字符串相关操作

首先我们有一笔资料如下

CREATE TABLE IF NOT EXISTS employee(  id INT NOT NULL AUTO_INCREMENT,  first_name VARCHAR(100) NOT NULL,  last_name VARCHAR(100) NOT NULL,  title VARCHAR(100) DEFAULT NULL,  salary DOUBLE DEFAULT NULL,  hire_date DATE NOT NULL,  notes TEXT,  PRIMARY KEY (id));INSERT INTO employee (first_name, last_name, title, salary, hire_date) VALUES     ('Robin', 'Jackman', 'Software Engineer', 5500, '2001-10-12'),    ('Taylor', 'Edward', 'Software Architect', 7200, '2002-09-21'),    ('Vivian', 'Dickens', 'Database Administrator', 6000, '2012-08-29'),    ('Harry', 'Clifford', 'Database Administrator', 6800, '2015-12-10'),    ('Eliza', 'Clifford', 'Software Engineer', 4750, '1998-10-19'),    ('Nancy', 'Newman', 'Software Engineer', 5100, '2007-01-23'),    ('Melinda', 'Clifford', 'Project Manager', 8500, '2013-10-29'),    ('Jack', 'Chan', 'Test Engineer', 6500, '2018-09-07'),    ('Harley', 'Gilbert', 'Software Architect', 8000, '2000-07-17');

SELECT CONCAT(column1,column2,...) FROM table_name; :concat可以用来合併column之字串。

可以在字符串中间穿插字串,以更美观,且可利用as更换原有之名称如CONCAT(first_name , last_name) => FullName 方便辨识。

mysql> SELECT CONCAT(first_name , ", " , last_name) as FullName FROM employee;+-------------------+| FullName          |+-------------------+| Robin, Jackman    || Taylor, Edward    || Vivian, Dickens   || Harry, Clifford   || Eliza, Clifford   || Nancy, Newman     || Melinda, Clifford || Jack, Chan        || Harley, Gilbert   |+-------------------+

SELECT CONCAT_WS("-",column1,column2,...) FROM table_name; :可以来将字符串合併并且在每个column之间穿插设置之字串。

mysql> SELECT CONCAT_WS("-",first_name,last_name,title) as FullName  FROM employee;+---------------------------------------+| FullName                              |+---------------------------------------+| Robin-Jackman-Software Engineer       || Taylor-Edward-Software Architect      || Vivian-Dickens-Database Administrator || Harry-Clifford-Database Administrator || Eliza-Clifford-Software Engineer      || Nancy-Newman-Software Engineer        || Melinda-Clifford-Project Manager      || Jack-Chan-Test Engineer               || Harley-Gilbert-Software Architect     |+---------------------------------------+9 rows in set (0.00 sec)

SELECT SUBSTRING("Hello jojo",2,6); :可以截取片段的字串,第一个参数为起始点,预设从第一个位置开始,第二个参数为数量。

mysql> SELECT SUBSTRING("Hello jojo",2,6);+-----------------------------+| SUBSTRING("Hello jojo",2,6) |+-----------------------------+| ello j                      |+-----------------------------+1 row in set (0.00 sec)

起始参数为负的话,从后面数起。

mysql> SELECT SUBSTRING("Hello jojo",-2);+------------------------------+| SUBSTRING("Hello jojo",-2) |+------------------------------+| jo                           |+------------------------------+1 row in set (0.01 sec)

此外我们SUBSTRING可以简写成SUBSTR

mysql> SELECT SUBSTR(title,-7) as test FROM employee;+---------+| test    |+---------+| ngineer || chitect || strator || strator || ngineer || ngineer || Manager || ngineer || chitect |+---------+

综合上面两个指令可以应用为如下

mysql> SELECT CONCAT(first_name," ",last_name,"was hired on ",SUBSTR(hire_date,1,4))    -> as information FROM employee;+-----------------------------------+| information                       |+-----------------------------------+| Robin Jackmanwas hired on 2001    || Taylor Edwardwas hired on 2002    || Vivian Dickenswas hired on 2012   || Harry Cliffordwas hired on 2015   || Eliza Cliffordwas hired on 1998   || Nancy Newmanwas hired on 2007     || Melinda Cliffordwas hired on 2013 || Jack Chanwas hired on 2018        || Harley Gilbertwas hired on 2000   |+-----------------------------------+

SELECT REPLACE("...","...","...") as person; :可以对指定字串做取代。

最后一个为我们要替换成的字串。

SELECT REPLACE("HELLO JOJO","JOJO","DIO") as person;+-----------+| person    |+-----------+| HELLO DIO |+-----------+1 row in set (0.00 sec

SELECT REVERSE("...") as person; :可以将字串颠倒。

SELECT REVERSE("OJOJ OLLEH") as person;+------------+| person     |+------------+| HELLO JOJO |+------------+1 row in set (0.01 sec)

SELECT CHAR_LENGTH("...") as total; :可以回传字串长度。

SELECT CHAR_LENGTH("HELLO JOJO") as total;+-------+| total |+-------+|    10 |+-------+1 row in set (0.01 sec)

应用在我们的资料上。

SELECT first_name,last_name, REPLACE(title,"Software","HARDWARE") as new,REVERSE(salary) as new FROM employee;+------------+-----------+------------------------+------+| first_name | last_name | new                    | new  |+------------+-----------+------------------------+------+| Robin      | Jackman   | HARDWARE Engineer      | 0055 || Taylor     | Edward    | HARDWARE Architect     | 0027 || Vivian     | Dickens   | Database Administrator | 0006 || Harry      | Clifford  | Database Administrator | 0086 || Eliza      | Clifford  | HARDWARE Engineer      | 0574 || Nancy      | Newman    | HARDWARE Engineer      | 0015 || Melinda    | Clifford  | Project Manager        | 0058 || Jack       | Chan      | Test Engineer          | 0056 || Harley     | Gilbert   | HARDWARE Architect     | 0008 |+------------+-----------+------------------------+------+

SELECT LOWER("...") , SELECT UPPER("..."); 前者可将字符串变成小写,后者大写,不影响符号及数字。

mysql> SELECT UPPER("Heelo");+----------------+| UPPER("Heelo") |+----------------+| HEELO          |+----------------+1 row in set (0.01 sec)mysql>mysql> SELECT LOWER("faDD");+---------------+| LOWER("faDD") |+---------------+| fadd          |+---------------+1 row in set (0.00 sec)

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章