SQL的SubString()函数

本文介绍了 SQL 中 SUBSTRING 函数的基本用法,并通过具体示例展示了如何在不同数据库环境中使用该函数。此外,还提供了如何利用 SUBSTRING 函数从身份证号码中提取出生年份并计算年龄的实际案例。

SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:

  • MySQL: SUBSTR(), SUBSTRING()
  • Oracle: SUBSTR()
  • SQL Server: SUBSTRING()

最常用到的方式如下 (在这里我们用SUBSTR()为例):

SUBSTR(str,pos): 由<str>中,选出所有从第<pos>位置开始的字元。请注意,这个语法不适用于SQL Server上。

SUBSTR(str,pos,len): 由<str>中的第<pos>位置开始,选出接下去的<len>个字元。

假设我们有以下的表格:

Geography 表格

region_namestore_name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

例1:

SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';

结果:

's Angeles'

例2:

SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';

结果:

'an D'

 

应用实例:

 

如何利用身份证号码来计算年龄?

create   table   #T   (Ptype   int   ,   PNO   varchar(50))   --ptype表示類別1表示15位
  insert   into   #T  
 
select   1,'430422790312881'  
 
insert   into   #T  
 
select   2,'320324198006140921'   
 
select   year(getdate())-     case     Ptype     when   1   then     cast(('19'+   substring(PNO,7,2))   as   int)   else     cast(substring(PNO,7,4)   as     int)   end  
 
from   #T  
 
drop   table   #T
/*
           
-----------
29
28

(影響 2 個資料列)
*/

 

 

create   table   #T   (   id   varchar(50))  
insert   into   #T  
select   '430422790312881'   union all
select   '320324198006140921'  

select
   
case when len(id) = 15 then
       
datediff(year,convert(datetime,(substring(id,7,6))),getdate())
   
else
       
datediff(year,convert(datetime,(substring(id,7,8))),getdate())
   
end 年龄
from #T

drop table #T
结果:
29
28

SQL 中的`SUBSTRING`函数用于从字符串中提取子字符串,在不同数据库中其使用方法和功能基本类似,但语法上可能存在一些差异,以下是详细介绍: ### 功能 `SUBSTRING`函数的主要功能是从一个字符串中提取指定位置和长度的子字符串。 ### 使用方法 不同数据库系统中`SUBSTRING`函数的语法可能有所不同,以下是常见数据库的使用方法: #### MySQLMySQL 中,`SUBSTRING`函数的语法为: ```sql SUBSTRING(str, pos, len) ``` - `str`:要提取子字符串的源字符串。 - `pos`:开始提取的位置,可以是正数或负数。正数表示从字符串的起始位置开始计数,负数表示从字符串的末尾开始计数。 - `len`:可选参数,表示要提取的子字符串的长度。如果省略该参数,则提取从`pos`位置到字符串末尾的所有字符。 #### SQL ServerSQL Server 中,`SUBSTRING`函数的语法为: ```sql SUBSTRING(str, start, length) ``` - `str`:要提取子字符串的源字符串。 - `start`:开始提取的位置,必须是正整数。 - `length`:要提取的子字符串的长度。 #### PostgreSQL 在 PostgreSQL 中,`SUBSTRING`函数有多种语法形式,常见的如下: ```sql SUBSTRING(str FROM pos FOR len) ``` - `str`:要提取子字符串的源字符串。 - `pos`:开始提取的位置。 - `len`:要提取的子字符串的长度。 ### 示例 以下是不同数据库中`SUBSTRING`函数的使用示例: #### MySQL 示例 ```sql -- 从字符串 'Hello, World!' 中提取从第 7 个字符开始的子字符串 SELECT SUBSTRING('Hello, World!', 7); -- 输出: World! -- 从字符串 'Hello, World!' 中提取从第 7 个字符开始,长度为 5 的子字符串 SELECT SUBSTRING('Hello, World!', 7, 5); -- 输出: World ``` #### SQL Server 示例 ```sql -- 从字符串 'Hello, World!' 中提取从第 7 个字符开始,长度为 5 的子字符串 SELECT SUBSTRING('Hello, World!', 7, 5); -- 输出: World ``` #### PostgreSQL 示例 ```sql -- 从字符串 'Hello, World!' 中提取从第 7 个字符开始,长度为 5 的子字符串 SELECT SUBSTRING('Hello, World!' FROM 7 FOR 5); -- 输出: World ``` 另外,还有示例演示了`SUBSTRING`的另一种语法形式: ```sql SELECT Name, SUBSTRING(Name FROM 1 FOR 4) AS FirstFour FROM Sample.Person; ``` 此示例从`Sample.Person`表的`Name`字段中提取前 4 个字符,并将其命名为`FirstFour` [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值