MYSQL中使用sql函数怎样截取字符串

哎,关于SQL,我在广东一家小公司做系统的时候,确实遇到了很多坑。
你提到了 SUBSTR 和 CHARINDEX,我记得很清楚。

有一年,当我们编写报告时,我们必须截取用户名的中间字符。
当时的数据库是SQL Server,用户名都是中文,比如“张三”、“李四”。
我使用 SUBSTR 并写了类似 SUBSTR(username, 2 , 3 ) 的内容,考虑截取第二到第四个字符。
结果呢?报错,说明参数类型不正确。
查了很多,原来这个东西在SQL Server中叫SUBSTRING,而不是SUBSTR。
确实,英语很混乱。
最后我改了一下,比例是正确的。

说到CHARINDEX,当你检查日志时,你必须找到某个关键字的起始位置。
例如,您可能会在日志中看到“错误:SQL 超时”,并且您想要找到“SQL”的开始位置。
我简单地使用 CHARINDEX('SQL', 'Error: SQL Timeout') 结果是 1 1 是的,是 1 1 ,从第 1 1 个字符开始。
这对我影响很深,因为我曾经写过一个查询来查找“Error”之后的所有内容,但是我忘记添加CHARINDEX,而我直接使用LIKE 'Error%,但我找不到它。
我花了很长时间。

不过这两个函数现在用得不多了。
很多场景都会用到PATINDEX字符串函数或者正则表达式。
我这几年做项目的时候基本上不用这两个。

哦,顺便说一句,你提到的 CHARINDEX('sql', 'microsoft.sql.server') 返回 1 1 ,是的,没错,“sql”从“microsoft.sql.server”中第 1 1 个字符的位置开始。

您还有其他问题吗?我经历过很多SQL陷阱。

mysql截取字段前几位

LEFT 函数使用字段左侧的字符。

语法:LEFT(字符串,字符数)。

示例:LEFT(mycolumn, 5 )。

表 mytable,字段 mycolumn,块前 5 个字符。

从我的表中选择 LEFT(mycolumn, 5 )。

返回 mycolumn 的前 5 个字符。

小字符数和实际返回的字符数。

Null 值,返回空字符串。

mysql截取字段前几位