sql语句,substring函数

结论:SQL截取字符串,确保公司名后两位正确。
大白话:写个SQL语句,从某个字段中截取一段文字,前提是公司名后面必须是两位特定的字。

关键点:
截取字段:指定字段名。

1 :截取起始位置。

charindex('公司','截取的字段'):找到'公司'这个词在字段中的位置。

+1 :加上1 ,确保包含'公司'这个词。

最后两个字:截取后的字符串的最后两个字符。

以公司结尾:确保这两个字符是'公司'。

项目:任何需要从字段中截取特定字符串的项目。
时间:随时可用。
数字:无特别数字要求。

你自己掂量。

在excel中如何筛选姓名为两个字的人员名单?

直接上SQL。

sql SELECT FROM 学生 WHERE MID(姓名, 2 , 1 ) = '小';
Access 2 01 3 环境没问题。

结果就是筛选出第二个字是“小”的姓名。

SQL把student_back表中所有姓名只有2个字的姓名中间加2个空格.

哎哟,这个问题让我想起当年在论坛上看到的一个类似的案例,当时也是有人搞不清楚汉字和英文字符长度在数据库中的区别。

先说这个姓名的字是汉字还是英文的问题,这很重要。
汉字在UTF-8 编码下每个字占三个字节,而在GBK编码下占两个字节。
英文每个字符占一个字节,这个你说的很清楚。

再说数据库类型,MySQL和Oracle处理字符长度的方式确实不一样。
MySQL用UTF-8 编码时,汉字是3 个字节,而在Oracle里用UTF-8 ,汉字也是3 个字节,但GBK下就不同了。

这个SQL语句更新操作看起来是想要将姓名列中的两个字合并成一个,通过CONCAT和SUBSTRING函数来操作。
但这里有个问题,即使汉字在UTF-8 编码下是3 个字节,数据库在进行字符串操作时,仍然将其当作一个字符来处理。

当时我就遇到过类似的状况。
有个学生提交了SQL语句,他原本是想更新那些只有两个汉字的姓名字段,结果呢,因为没考虑到汉字的长度,导致更新了所有两个字以上的姓名。
这在论坛上引起了挺大的讨论。

当时我就是这样回复的:“说实话,我之前也没想明白这个问题。
但根据你的描述,我猜是因为你没有考虑到汉字的长度问题。
在MySQL中,无论汉字还是英文字符,length()函数都是按字符来计算的,所以那个语句会把每个汉字都当作一个字符来处理。
如果你只想更新两个字的名字,可能需要重新写一下这个SQL语句。

至于具体的修改,可能需要根据实际情况来调整,比如使用LIKE来匹配特定长度的姓名。
总之,这个问题还是需要根据具体数据库的类型和编码来具体分析。
希望我的回答能帮到你,如果有不清楚的地方,也欢迎继续提问。