sql语句如何截取某字段的一部分

我记得帮助一位同事处理订单数据。
客户姓名中间有奇怪的符号,比如“王@明”。
他用SUBSTRING提取出了“王明”,但是@符号也出来了。
当时他还挺担心的,说这不可能。
客户姓名不得有混乱的字符。
我看着电脑屏幕,突然想到,为什么不尝试使用正则表达式来删除符号呢?他尝试了一下,结果成功了。
然而,这与 SUBSTRING 有点无关。
不幸的是,在处理数据时有时会发生这种情况。
一项功能并不能解决所有问题。

sql语句如何截取某字段的一部分

粗略地说,SQL中的SUBSTRING函数用于从字符串中截取子字符串。
用法很简单:只需 SUBSTRING(要修剪的字符串、从哪里开始以及修剪多长)。
请记住,起始位置从 1 开始,而不是 0。
例如,如果要从“abcde”中删除“ab”,只需编写 SUBSTRING('abcde',1 ,2 )。

特别之处:如果你的起始位置有负数,它会自动变为1 ,但截取长度会根据负数进行调整。
例如SUBSTRING('abcde',-5 ,3 ),它将捕获倒数第五个字符,长度为3 ,结果为“abc”。

此外,如果将长度设置为 0,则会返回空字符串。
例如,SUBSTRING('abcde',1 ,0) 是一个空字符串。

使用场景 例如,如果您有一个日期字符串并且只想捕获年、月和日,请使用此函数。
灵活设置起始时间和长度,可以满足不同的拦截需求。

sql中如何在where字句里截取某个字段的前几位字符

需要明确的是:SQL中截取字符的方法主要取决于数据库类型,但原理是类似的。

Oracle 使用 SUBSTR,而 SQL Server 使用 SUBSTRING。
这些是核心差异。
例如,Oracle 的 SUBSTR(p.end_time, 1 , 4 ) = '2 01 2 ' 从第一个位置捕获 4 个字符,而 SQL Server 的 SUBSTRING(p.end_time, 1 , 4 ) = '2 01 2 ' 是相同的。
去年我们做这个项目,在使用Oracle的写法时遇到了一个陷阱。
由于索引错误,需要进行3 000级数据的全表扫描。
说实话,这确实是一个陷阱。

我一开始以为MID()和SUBSTR()是可以互换的,后来发现Oracle是MID(),而SQL Server是SUBSTR()。
等等,还有别的事。
LEN() 函数非常易于使用。
例如,LEN(p.name) > 1 0 搜索长度超过 1 0 个字符的名称。
很多人没有注意到这一点。

建议多练习LEFT()和RIGHT()。
示例:LEFT(p.address, 5 ) = '北京'。
地址的前5 个字符来自北京。
这有很多场景。
您认为哪种数据库方式使用起来更方便?