sqlserver分隔符截取

博客展示了一条数据库SQL查询语句,使用了LEFT、SUBSTRING、CHARINDEX等函数对表中的字段进行处理,查询条件为id等于特定值,还给出了转载来源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select
LEFT(filed,charindex(',',field,1)-1) as type,
SUBSTRING(filed,34,CHARINDEX(',',filed+',',1)-1)
from table where id = 'sdfdsfsfds'

转载于:https://www.cnblogs.com/handsome1013/p/11041586.html

### SQL Server 截取字符串使用的函数和方法 在 SQL Server 中,有多种内置函数可用于截取字符串。以下是这些常用函数及其功能的详细介绍: #### 1. `LEFT` 函数 此函数用于从字符串的左侧开始提取指定数量的字符。其语法如下: ```sql LEFT(character_expression, integer_expression) ``` 其中,`character_expression` 是输入的字符串,而 `integer_expression` 表示要截取的字符数。例如: ```sql SELECT LEFT('SQL_Server_2008', 4); -- 返回结果:SQL_ ``` 这表示从字符串 `'SQL_Server_2008'` 的左侧开始截取前 4 个字符[^1]。 #### 2. `RIGHT` 函数 此函数用于从字符串的右侧开始提取指定数量的字符。其语法如下: ```sql RIGHT(character_expression, integer_expression) ``` 同样地,`character_expression` 是输入的字符串,而 `integer_expression` 表示要截取的字符数。例如: ```sql SELECT RIGHT('SQL_Server_2008', 4); -- 返回结果:2008 ``` 这表示从字符串 `'SQL_Server_2008'` 的右侧开始截取最后 4 个字符[^1]。 #### 3. `SUBSTRING` 函数 此函数可以从字符串中间的任意位置开始提取子串。其语法如下: ```sql SUBSTRING(character_expression, start_position, length) ``` 参数解释: - `character_expression`: 输入的字符串。 - `start_position`: 开始截取的位置索引(第一个字符的位置为 1)。 - `length`: 要截取的字符数。 例如: ```sql SELECT SUBSTRING('SQL_Server_2008', 5, 6); -- 返回结果:Server ``` 这表示从字符串 `'SQL_Server_2008'` 的第 5 个字符开始,向右截取 6 个字符。 需要注意的是,在某些情况下,如果起始位置设置为 0,则实际的起始位置会被视为 1,并且截取长度会减少 1[^3]。 #### 4. `CHARINDEX` 函数 虽然这不是一个专门用来截取字符串的函数,但它可以帮助定位某个子字符串在主字符串中的位置。其语法如下: ```sql CHARINDEX(substring_to_find, character_expression [, start_location ]) ``` 例如: ```sql SELECT CHARINDEX('Server', 'SQL_Server_2008'); -- 返回结果:5 ``` 这意味着子字符串 `'Server'` 在主字符串 `'SQL_Server_2008'` 中的第一个匹配项位于第 5 个位置。 #### 5. `LEN` 函数 这个函数返回给定字符串的总长度。它通常与其他字符串处理函数一起使用来动态计算需要截取的部分。其语法如下: ```sql LEN(character_expression) ``` 例如: ```sql SELECT LEN('SQL_Server_2008'); -- 返回结果:14 ``` 通过组合以上几个函数,可以实现更复杂的字符串操作需求。比如可以根据特定分隔符拆分字符串或者仅保留部分字段的内容。 ### 实际应用案例 假设有一个名为 `employee` 的表,其中包含一列叫做 `humanid`,存储员工编号。现在希望获取每位员工编号的前四位作为部门代码显示出来。可以通过下面这条查询语句完成目标: ```sql SELECT SUBSTRING(humanid, 1, 4) AS department_code FROM employee; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值