SQL如何截取指定字段某一个字符的前面/后面的字符串

您觉得这个数据库中找到的句子怎么样?让我告诉你一些关于这个的事情。
我在广东的时候就被困住了。

当时我们公司使用SQL Server开发系统。
有一次老板让我核对零件号。
有一个名为“part_no”的字段,其中包含类似“OPE-CZ-1 08 -003 -SE7 1 .2 ”的字符串。
老板告诉我,我必须挖掘并整理该点前面的内容。
当时我很困惑。
我应该怎么办?
查了资料,发现SQL Server有CHARINDEX。
哪里可以找到一些角色?我写了一份声明;我告诉你怎么写:
sql SELECT LEFT(part_no, CHARINDEX('.', part_no)
1 ) AS part_prefix 来自section_table,
你看到CHARINDEX('.',part_no)指向哪里以及它找到了什么字符?然后 LEFT(part_no, ...
1 ) 从开头开始并获取该点之前的字符。
我试过了,当然是“OPE-CZ-1 08 -1 08 -SE7 1 ”。
这是真的。

然后老板要了一个在后面。
大家想想,这不是很容易吗?更改脚本:
sql SELECT RIGHT(part_no, LEN(part_no)
CHARINDEX('.', part_no)) AS part_suffix 来自section_table,
其中 LEN(part_no) 是整个字符串的长度,CHARINDEX('.') 是点。
点接点不等于总长度减去点吗?我试过了,是的,“2 ”是正确的。

后来我将项目转到另一家使用Oracle的公司。
那时我手里就有《Oracle SQL优化指南》翻阅之后发现了类似的方法。
Oracle 还使用 INSTR 查找位置并使用 SUBSTR 获取字符串。
写法类似:
sql SELECT SUBSTR(part_no, 1 , INSTR(part_no, '.')
1 ) AS part_prefix FROM 零件表;
SELECT SUBSTR(零件号, INSTR(零件号, '.') + 1 ) AS 零件后缀 来自section_table,
你看,概念与 SQL Server 相同,只是函数名称发生了变化。
我再次尝试,数据匹配。

后来我有一个项目用到了MySQL。
当时我在成都出差,在一家火锅店旁边写代码。
MySQL 也有类似的函数,称为 INSTR 和 SUBSTRING。
写法类似:
sql SELECT SUBSTRING(part_no, 1 , INSTR(part_no, '.')
1 ) AS part_prefix FROM 零件表;
SELECT SUBSTRING(零件号, INSTR(零件号, '.') + 1 ) AS 零件后缀 来自section_table,
其思想与Oracle和SQL Server相同,只是函数名称已更改。
我再次尝试,数据匹配。

总结一下,这个主题的核心是一个逻辑:先找到角色位置,然后根据位置决定走前还是走后。
SQL Server 使用 CHARINDEX; Oracle 使用 INSTR,MySQL 使用 INSTR 来查找位置。
使用 LEFT 或 SUBSTR 从头开始​​并返回;使用 RIGHT 或 SUBSTR 从指定位置到达末尾。

当时我经历了很多错误,我知道我不能盲目地写这个案例。
步步我必须这么做。
如果你记住这个逻辑,以后遇到类似的事情就不会害怕了。

mysql截取字段前几位

等等,还有一件事。
昨天我帮邻居老王修了电脑,他问我这件事。
他有一家在线商店,里面有很长的产品描述,他想让前几句话引人入胜。
我说,试试这个功能,果然有效。
时间是下午三点左右,阳光斜射进房间。
他点点头,看着手机。

sql 截取字段前8位和最后4位

嘿,我以前用过这个 SUBSTRING 函数,它非常有用。
它可以从各种数据类型中提取部分,例如字符、二进制字符串、文本、图像以及列或表达式。
在2 02 2 年的一个项目中,我使用这个功能从大文本中屏蔽掉了重要的部分信息。

语法很简单,SUBSTRING(expression, start, length),其中expression是你要操作的数据,start是你要开始阻塞的位置,length是你要阻塞的长度。

例如,我有一个名为@str的变量,它的类型为varchar并包含字符“gwengswelgkweg”。
我使用 SUBSTRING 来抑制前 8 位数字,结果是“gwengswel”。
后来我屏蔽了最后4 位数字,结果是“kweg”。

还有两个函数 left() 和 right(),与 SUBSTRING 类似,但它们专门用于抑制字符串两端的子字符串。
例如,如果我屏蔽@str, left(@str,8 )的前8 位,结果也是'gwengnwel'。
截距的最后 4 位数字是正确的(@str,4 ),结果仍然是“kweg”。

这两个函数非常方便,特别是当你需要快速获取字符串两端的信息时。
请记住,这些函数在 SQL Server 中非常常用,尤其是在处理文本数据时。
当时我很困惑,过了一段时间我才意识到我在做什么,然后我就习惯了。
也许我有偏见,但这个功能确实很有用。