SQL2000字符串分离

做项目需要,需要把一串由"|"分割的日期字符串分离,故写了以下过程

declare @Days varchar(4000)
declare @tmpDay varchar(10)
set @Days='2006-01-12|2006-02-13|2006-03-15|2006-11-11|2003-1-1'
set @tmpDay=''
declare @i int
set @i=0
while @i<len(@Days)
begin
  set @i=@i+1
  if SUBSTRING(@Days,@i,1)='|'
     begin
       print left(@Days,@i-1)
       set @Days=SUBSTRING(@Days,@i+1,len(@Days))
       set @i=0
     end 
end
print @Days
输出结果:
2006-01-12
2006-02-13
2006-03-15
2006-11-11
2003-1-1

转载于:https://www.cnblogs.com/hgndinfo/archive/2006/06/02/2713903.html

### SQL Server 字符串截取函数及其使用方法 在 SQL Server 中,字符串截取是一个非常重要的功能,主要用于提取字符串的特定部分。以下是常用的字符串截取函数以及它们的具体用法: #### 1. `SUBSTRING` 函数 `SUBSTRING` 是最通用的字符串截取函数,可以从指定位置开始截取一定长度的子字符串。 语法如下: ```sql SUBSTRING(expression, start, length) ``` - **expression**: 要从中提取子字符串的目标字符串。 - **start**: 子字符串起始位置(第一个字符的位置为 1)。 - **length**: 截取的字符数量。 示例: ```sql SELECT SUBSTRING('HelloWorld', 1, 5); -- 返回 'Hello' SELECT SUBSTRING('HelloWorld', 6, 5); -- 返回 'World' ``` 此函数适用于多种场景,比如从固定格式的数据中提取部分内容[^3]。 --- #### 2. `LEFT` 函数 `LEFT` 函数用于从字符串左侧开始截取指定数量的字符。 语法如下: ```sql LEFT(expression, length) ``` - **expression**: 目标字符串。 - **length**: 截取的字符数量。 示例: ```sql SELECT LEFT('HelloWorld', 5); -- 返回 'Hello' ``` 该函数常用于获取字符串开头的部分内容,例如提取日期时间字段中的年份或月份[^4]。 --- #### 3. `RIGHT` 函数 `RIGHT` 函数是从字符串右侧开始截取指定数量的字符。 语法如下: ```sql RIGHT(expression, length) ``` - **expression**: 目标字符串。 - **length**: 截取的字符数量。 示例: ```sql SELECT RIGHT('HelloWorld', 5); -- 返回 'World' ``` 它通常被用来处理需要从字符串末尾提取信息的情况,如文件扩展名或其他后缀数据[^4]。 --- #### 实际应用场景举例 假设有一张名为 `Employee` 的表格,其中包含员工的名字和姓氏组合成的一个字段 `FullName`,现在需要分别提取名字和姓氏。 | FullName | |----------------| | John Smith | | Jane Doe | 可以使用以下查询来分离名字和姓氏: ```sql -- 提取名字 SELECT LEFT(FullName, CHARINDEX(' ', FullName) - 1) AS FirstName FROM Employee; -- 提取姓氏 SELECT RIGHT(FullName, LEN(FullName) - CHARINDEX(' ', FullName)) AS LastName FROM Employee; ``` 以上例子展示了如何利用这些函数完成复杂的字符串分割任务[^2]。 --- #### 注意事项 - 如果尝试访问超出范围的索引,则会返回 NULL 或者抛出错误,具体取决于上下文环境。 - 当处理 Unicode 数据时,请确保输入参数类型匹配以避免潜在转换问题。 通过合理运用上述三种基本函数 (`SUBSTRING`, `LEFT`, 和 `RIGHT`) 可满足大部分日常工作中遇到的各种字符串操作需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值