首页 > 数据库 >SQL语句_字符串的处理

SQL语句_字符串的处理

时间:2023-06-20 14:12:13浏览次数:46  
标签:语句 name middlename lastname user SQL 字符串 WHERE SELECT

user_name表:

firstname middlename lastname
John Wilson Smith
Adam Edward Davis
Marie Elaine White

 

  我们在日常的工作中,使用SQL语句查询出数据后,需要对一些数据的字段做一些合并、取其一段或是去掉空格的处理。这里我们就会用到SQL语句中的CONCAT(链接)、SUBSTR(获取部分字符)和TRIM(移除部分字符)。

  CONCAT 在不同类型的数据库中使用的方式也有一点点的区别。在MySQL中链接的字符串数量时没有限制的。如:

SELECT CONCAT (firstname, lastname)  AS fullname FROM user_name WHERE lastname = 'White' ;

得出的结果:

fullname
MarieWhite

SELECT CONCAT (firstname, middlename,lastname)  AS fullname FROM user_name WHERE lastname = 'White' ;

得出的结果:

fullname
MarieElaineWhite

这两个SQL语句都是可以正常查询的。

但是Oracle数据库中,CONCAT()只允许两个参数,如果需要多个参数合并时就需要使用‘||’符号。如:

SELECT CONCAT (firstname, lastname) AS fullname FROM user_name WHERE lastname = 'White' ;

得出的结果:

fullname
MarieWhite

SELECT CONCAT (firstname, middlename,lastname) AS fullname FROM user_name WHERE lastname = 'White' ;  系统会报错,无法执行此条SQL语句。正确的SQL写法

SELECT  firstname||middlename||lastname AS fullname FROM user_name WHERE lastname = 'White' ; 

得出的结果:

fullname
MarieElaineWhite

 

同样在SQL Server数据库中,也有同样的问题,只不过不是使用‘||’来链接多个字符串,而是使用‘+’ 。 如

SELECT  firstname + middlename + lastname  AS fullname FROM user_name WHERE lastname = 'White' ; 

得出的结果:

fullname
MarieElaineWhite

 

  SUBSTR 获取部分字符串,它在不同类型的数据库中使用的方法也有一点点的区别。MySQL中SUBSTR()和SUBSTRING()都可以使用,Oracle中只能使用SUBSTR(),而SQL Server中只能使用SUBSTRING()。

  SUBSTR()本身有两种使用的方式,一种是SUBSTR(str, pos) str指字符串,pos只从第几位开始。SELECT SUBSTR (firstname, 2) FROM user_name WHERE firstname = 'Adam'  结果表示:从'Adam'的第2位开始读取字符串。另一种是SUBSTR(str, pos, len)  len指获取的字符串长度。 SELECT SUBSTR (firstname, 2, 3) FROM user_name WHERE firstname = 'Marie'   结果表示:从'Marie'的第2位开始,向后3个字符长度的字符串。

 

  TRIM  移除字符串中不需要的字符。TRIM([位置] [需要移除的字符串]FROM 原字符串): [位置] 可以是LEADING(起始)、TRAILING(结尾)或BOTH(起始和结尾)。[需要已出单额字符串]没有明确的时候,那原字符串中空白就会被移除。如: middlename 列表中,从起始开始,移除E字符

SELECT middlename, TRIM(LEADING 'E' FROM $LISTTOSTRING(middle)) AS Trimmed FROM user_name WHERE middlename IS NOT NULL   $LISTTOSTRING 指从列表创建字符串的列表函数。

middlename Trimmed
Wilson Wilson
Edward dward
Elaine laine

middlename 列表中,从结尾开始,移除rd字符

SELECT middlename, TRIM(TRAILING 'rd' FROM $LISTTOSTRING(middle)) AS Trimmed FROM user_name WHERE middlename IS NOT NULL

middlename Trimmed
Wilson Wilson
Edward Edwa
Elaine Elaine

middlename 列表中,从起始和结尾开始,移除'E' 'on'字符

SELECT middlename, TRIM(TRAILING 'E' 'on' FROM $LISTTOSTRING(middle)) AS Trimmed FROM user_name WHERE middlename IS NOT NULL

middlename Trimmed
Wilson Wilso
Edward dward
Elaine laine

标签:语句,name,middlename,lastname,user,SQL,字符串,WHERE,SELECT
From: https://www.cnblogs.com/xiaocai84/p/17493333.html

相关文章

  • 一道SQL面试题(行列互换)
    有一个SQL题在面试中出现的概率极高,最近有学生出去面试仍然会遇到这样的题目,在这里跟大家分享一下。题目:数据库中有一张如下所示的表,表名为sales。年季度销售量19911111991212199131319914141992121199222219923231992424要求:写一个SQL语句查询出如下所示的结果。年一季度二季度三......
  • 图书馆管理系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构。
    图书馆管理系统代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构。优化过的界面,拥有管理员和普通用户,普通用户可注册登录,管理员可登录,功能齐全。管理员可管理普通用户,增加其他管理员,增添图书,借还书操作,查看已还书。普通用户,可在线查看现有图书,和自己已借图书。推荐使用php......
  • 选题系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构。
    选题系统代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构。优化过的界面,拥有管理员、审核员、教师和学生这四种身份登录方式和对应功能,功能齐全。推荐使用phpstudy+navicat搭建和管理项目!服务:提供现成代码,提供环境搭建相关文档。选题系统代码源码是一套完整的代码源码,采......
  • Mysql数据导出---select into outfile
    select...intooutfile语法select*fromstudentsorderbyscorelimit100intooutfile'/database/mysql/tmp/students.csv'FIELDSTERMINATEDBY','OPTIONALLYENCLOSEDBY'"'ESCAPEDBY'\'LINEST......
  • MySQL有哪些锁?
    MySQL有哪些锁?按锁粒度分类,有行级锁、表级锁和页级锁。行级锁是mysql中锁定粒度最细的一种锁。表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁的类型主要有三类:RecordLock,记录锁,也就是仅仅把一条记录锁上;Gap......
  • mysql flush table的使用
    会话1:selectsleep(500)fromt_biz1where.....会话2:setsessionwait_time_out=5000;flushtableswithlock; 会话3:select*fromt_biz1where....会话4:select*fromt_biz2where....会话5:unlocktables; 要保证会话1的sleep时间大于会话2 会话1执......
  • 考前复习——字符串哈希与哈希表
    点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineN1005#defineULLunsignedlonglong#defineBase13331intn;ULLh[N][N],q[N];charch[N][N];inlineintread(){ intx=0; boolf=1; charch=getchar(); for(;!isdigit(ch);ch=getcha......
  • SQL语句_链表(下)
    Store_Info表:store_namesalesdateA50001-01-2000B20002-01-2000A150002-10-2000D100003-08-2000Sales表:salesdate20002-01-2000100003-08-200060004-08-200075005-08-2000表链接查询除了可以使用JOIN,还可以使......
  • 【数据库原理、编程与性能】Basic SQL Query Language
    文章目录1.HistoryofSQL2.CapabilitiesofSQL2.1综合统一2.2高度非过程化2.3面向集合的操作方式2.4SQL以同一种语法结构提供两种使用方式2.5语言简捷,易学易用3.SQL语句3.1Create语句3.2Select语句3.3Subquery语句3.3.1定义3.3.2Conception(概念)3.3.3predicate(谓词......
  • [ERROR] Aborting 安装mysql5.7报错
    2023-06-20T03:17:11.632401Z0[ERROR]Fatalerror:Can'topenandlockprivilegetables:Table'mysql.user'doesn'texist2023-06-20T03:17:11.632414Z0[ERROR]Fatalerror:FailedtoinitializeACL/grant/timezonesstructuresorfailed......