在某些情况下,我们需要从字符串中截取指定长度的子字符串。虽然 SQL 提供了一些内置函数可以轻松实现此目的,但在某些情况下,我们可能希望避免使用函数来提高性能或满足特定限制。
使用SUBSTR()函数
SUBSTR() 函数是一种常用的 ,它允许我们从字符串中提取子字符串。其语法如下:
sql
SUBSTR(string, start, length)
其中:
* string:要从中提取子字符串的字符串。
* start:子字符串开始的位置,从 1 开始计数。
* length:子字符串的长度。
例如,要从字符串 "HelloWorld" 中截取前 4 个字符,我们可以使用以下查询:
sql
SELECT SUBSTR('HelloWorld', 1, 4);
这将返回 "Hell"。
不使用函数的截取
如果我们希望不使用函数来截取子字符串,我们可以使用以下 :
使用字符串连接运算符 (||) 将字符串拆分成多个部分。例如,要截取前 4 个字符,我们可以使用以下查询:
sql
SELECT LEFT('HelloWorld', 4) || RIGHT('HelloWorld', LENGTH('HelloWorld') - 4);
这将返回 "Hell"。
使用 CASE 语句根据字符串长度创建不同的子字符串。例如,以下查询截取前 4 个字符,如果字符串长度小于 4,则返回整个字符串:
sql
SELECT CASE WHEN LENGTH('HelloWorld') >= 4 THEN LEFT('HelloWorld', 4) ELSE 'HelloWorld' END;
这将返回 "Hell"。
使用正则表达式来匹配子字符串。例如,以下查询使用正则表达式来匹配前 4 个字符:
sql
SELECT REGEXP_SUBSTR('HelloWorld', '^.