SQL中字符串截取、连接、替换等函数的用法

时间:2022-06-18 11:28:49

一、SQL中SUBSTRING函数的用法
1、功能:返回字符、二进制、文本或图像表达式的一部分
2、语法:SUBSTRING ( expression, start, length )
3、QL 中的 substring 函数是用来抓出一个栏位数据中的其中一部分。这个函数的名称在不同的数据库中不完全一样:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()
4、参数:
expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。
start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。
length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度。

5、举例:

(1)SELECT  SUBSTR('MySQL', 2, 2);

结果:'yS'

SQL中字符串截取、连接、替换等函数的用法    SQL中字符串截取、连接、替换等函数的用法(2)UPDATE tb_lse_data_latbook SET latbook_urlParam=SUBSTRING(latbook_url,28,LENGTH(latbook_url)) WHERE db_id=51;

二、SQL— CONCAT(字符串连接函数)
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +

CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

来看几个例子。假设我们有以下的表格:

Geography 表格

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

例子1:
MySQL:
(1)SELECT CONCAT('My', 'S', 'QL');

结果:

'MySQL'

SQL中字符串截取、连接、替换等函数的用法

SQL中字符串截取、连接、替换等函数的用法

(2)UPDATE tb_lse_data_latbook SET latbook_urlParam=CONCAT('key=',latbook_issn) WHERE db_id=54
(3)UPDATE tb_lse_data_latbook SET latbook_urlParam=CONCAT('key=',latbook_issn,'&volume=') WHERE db_id=21

例子2:
Oracle:
(1)SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';
结果:
'EastBoston'
(2)SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston';
结果:

'East Boston'

例子3:
SQL Server:
(1)SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston';
结果:
'East Boston'

三、SQL中的REPLACE替换字符函数的用法
语法 
REPLACE ( original-string, search-string, replace-string )

参数 
如果有某个参数为 NULL,此函数返回 NULL。
original-string      被搜索的字符串。可为任意长度。
search-string       要搜索并被 replace-string 替换的字符串。该字符串的长度不应超过 255 个字节。如果 search-string 是空字符串,则按原样返回原始字符串。
replace-string      该字符串用于替换 search-string。可为任意长度。如果 replacement-string 是空字符串,则删除出现的所有 search-string。

例子:

将表tableName中的recordName字段中的 abc 替换为 ddd

(1)UPDATE tableName SET recordName=REPLACE(recordName,'abc','ddd')

这个函数有一点不足是不支持 text,ntext类型字段的替换,可以通过下面的语句来实现:
(2)update tableName set recordName=replace(cast(recordName as varchar(8000)) ,'abc','ddd')

(3)UPDATE tb_lse_data_latbook SET latbook_urlParam=REPLACE(latbook_urlParam,'&scope=site','') WHERE db_id=47