SQL SUBSTRING ( expression , start , length )

本文介绍了一个具体的SQL语句示例,展示了如何通过SUBSTRING函数从一个字段中提取特定部分,并将其用于与其他表的字段进行匹配的过程。此方法常用于数据整合与查询。

SUBSTRING ( expression , start , length ) 使用

 

比如A表ABC字段的ID号是123456|789
我想用SQL语句取出789后,与B表的EFG字段(EFG=789)关联,从而查找出两个表里的记录


select * from A,B Where substring(A.ABC,len(A.ABC)-2,3)=B.EFG

<think>我们正在回答用户关于SQLSUBSTRING函数的使用方法及示例的问题。根据引用内容,我们可以总结如下: 1. 引用[1]和[2]提供了SUBSTRING函数的基本语法和示例。 2. 引用[3]和[4]则提供了SQL函数的大类,其中SUBSTRING属于字符串函数。 SUBSTRING函数用于从字符串中提取子字符串。其基本语法有两种形式: 形式1SQL标准): ```sql SUBSTRING(string_expression FROM start_position [FOR length]) ``` 形式2(SQL Server等常用): ```sql SUBSTRING(expression, start, length) ``` 参数说明: - `expression`:要从中提取子字符串的字符串表达式(可以是字符串、二进制字符串、文本、图像、列或包含列的表达式)。 - `start`:指定子字符串开始位置的整数(注意:第一个字符的位置是1,不是0)。 - `length`:可选参数,指定要提取的字符数(如果省略或大于剩余字符串的长度,则返回从开始位置到字符串末尾的所有字符)。 注意:不同数据库系统可能对函数的实现有细微差别,但基本用法一致。 下面给出几个示例: 示例1:从字符串中提取前4个字符 ```sql SELECT SUBSTRING(&#39;Hello World&#39;, 1, 4) AS ExtractedString; ``` 结果:&#39;Hell&#39; 示例2:从第6个字符开始提取到末尾(省略长度) ```sql SELECT SUBSTRING(&#39;Hello World&#39;, 6, LEN(&#39;Hello World&#39;)-5) AS ExtractedString; -- 或者省略长度参数(但在标准SQL中必须指定,所以这里用LEN计算长度) --SQL Server中,如果长度超过剩余长度,会自动取到末尾,因此可以给一个很大的数 SELECT SUBSTRING(&#39;Hello World&#39;, 6, 100) AS ExtractedString; -- 结果:&#39; World&#39; ``` 示例3:使用FROM...FOR语法(标准SQL) ```sql SELECT SUBSTRING(&#39;Hello World&#39; FROM 6 FOR 5) AS ExtractedString; ``` 结果:&#39; Worl&#39;(注意:空格也算字符) 示例4:从表中提取子字符串(引用[1]的示例) ```sql SELECT Name, SUBSTRING(Name FROM 1 FOR 4) AS FirstFour FROM Sample.Person; ``` 这个查询从Sample.Person表的Name列中提取每个姓名的前4个字符。 示例5:处理中文字符串(注意:一个中文字符通常占2个字节,但具体取决于数据库的字符集,在SQL Server中,如果使用nvarchar,则一个中文字符占2个字节,但作为字符处理时,SUBSTRING函数按字符截取,所以一个中文字符算一个字符) ```sql SELECT SUBSTRING(N&#39;中国北京&#39;, 1, 2) AS City; -- 结果:&#39;中国&#39; ``` 注意事项: - 如果start为负数或0,不同数据库处理方式不同。在SQL Server中,start不能小于1,否则会返回错误。 - 如果start大于字符串长度,则返回空字符串。 - 在MySQL中,SUBSTRING函数的语法相同,但注意字符串索引从1开始。 另外,引用[3]和[4]提到,SQL函数分为聚合函数、转型函数、日期函数、数学函数、字符串函数、系统函数和文本图像函数。SUBSTRING属于字符串函数,用于处理字符串数据。 希望以上解释和示例能帮助用户理解SUBSTRING函数的使用方法。 §§相关问题§§ 1. 在SQL中,除了SUBSTRING函数,还有哪些常用的字符串函数? 2. 如何处理SUBSTRING函数中的中文字符截取问题? 3. SUBSTRING函数在数据清洗中有哪些应用场景? 4. 在不同数据库系统中(如MySQL、Oracle、SQL Server),SUBSTRING函数的使用有何差异?</think>### SQL SUBSTRING 函数使用详解 #### 基本语法 ```sql -- 标准语法 SUBSTRING(expression, start, length) -- 等效语法(SQL 标准) SUBSTRING(expression FROM start [FOR length]) ``` **参数说明**: 1. `expression`:要截取的源字符串(列名或字符串字面值) 2. `start`:起始位置(**从 1 开始计数**) 3. `length`:可选,截取字符数(省略时截取到末尾)[^2] #### 使用示例 1. **截取固定长度子串** ```sql SELECT SUBSTRING(&#39;SQL Tutorial&#39;, 1, 3) AS Result; -- 结果:&#39;SQL&#39; ``` 2. **从指定位置截取到末尾** ```sql SELECT SUBSTRING(&#39;Database&#39;, 5) AS Result; -- 结果:&#39;base&#39; ``` 3. **标准语法截取** ```sql SELECT SUBSTRING(&#39;2023-10-15&#39; FROM 6 FOR 2) AS Month; -- 结果:&#39;10&#39;(截取月份部分)[^1] ``` 4. **处理表数据** ```sql SELECT ProductCode, SUBSTRING(ProductCode, 3, 4) AS SerialNum FROM Products; -- 示例结果:&#39;P-12345&#39; → &#39;1234&#39; ``` 5. **结合其他函数使用** ```sql SELECT SUBSTRING(FirstName, 1, 1) + &#39;. &#39; + LastName AS ShortName FROM Employees; -- 示例结果:&#39;John Smith&#39; → &#39;J. Smith&#39; ``` #### 注意事项 1. **位置索引从 1 开始**(不是 0) 2. **长度超限时**:自动截取到字符串末尾 ```sql SELECT SUBSTRING(&#39;Hello&#39;, 3, 10) -- 返回&#39;llo&#39; ``` 3. **中文字符处理**:每个汉字按 1 字符计算 ```sql SELECT SUBSTRING(N&#39;中国北京&#39;, 3, 2) -- 返回&#39;北京&#39; ``` 4. **负值/零值位置**:不同数据库行为不同(SQL Server 会报错) #### 常见应用场景 1. 提取日期组件(年/月/日) 2. 解析产品编码规则 3. 隐藏敏感信息(如 `SUBSTRING(CardNo, 12, 4)` 显示信用卡末四位) 4. 数据清洗(去除不规则前缀/后缀) > 提示:在 SQL Server 中,等效函数为 `SUBSTRING()`,而 Oracle 使用 `SUBSTR()`,MySQL 两者皆可[^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值