MySql的填充字符串函数LPAD及注意点

参考:

https://www.cnblogs.com/QQParadise/articles/4705615.html

https://blog.csdn.net/sinat_38899493/article/details/78710482


MySql中有许多函数,日前用到一个较少使用的函数 lpad(str,len,padstr)

  • LPAD(str,len,padstr):字符串左填充函数

字符串 padstr对 str进行左边填补直至它的长度达到 len个字符长度,然后返回 str。如果 str的长度长于 len',那么它将被截除到 len个字符。

mysql> SELECT LPAD('hi',6,'abc'); -> 'abcahi'

mysql> SELECT LPAD('hi',8,'ab'); -> 'abababhi'

  • RPAD(str,len,padstr):字符串右填充函数

用字符串 padstr对 str进行右边填补直至它的长度达到 len个字符长度,然后返回 str。如果 str的长度长于 len',那么它将被截除到 len个字符。

mysql> SELECT RPAD('hi',5,'?'); -> 'hi???'

  • 注意点1:如果指定的len小于str的长度,此时将进行截取,并且无论是LPAD还是RPAD,都是保留靠前的字符.

如:LPAD('abcdef',4,'?'); 和RPAD('abcdef',4,'?');结果都为abcd

MySql的填充字符串函数LPAD及注意点_第1张图片 

MySql的填充字符串函数LPAD及注意点_第2张图片

  • 注意点2:当 LPAD(str,len,padstr)中的str为int类型或者padstr为int类型(非char类型)时,此时,使用navicat可以正常执行,但是我遇到在项目中会乱码出错,建议先转为char类型在进行填充。

例子如下:

页面中int类型的出现乱码:

MySql的填充字符串函数LPAD及注意点_第3张图片

MySql的填充字符串函数LPAD及注意点_第4张图片

这里使用cast进行类型转换后(使用convert也可以,concat则报错),问题解决: 

 


Tip:mysql的类型转换有三种办法:(参考:https://blog.csdn.net/hxpjava1/article/details/36438061)

可使用函数

1,cast( XX AS TYPE)

2,convert(XX,TYPE)

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]  这里的N不可少
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

3,concat(),(int->char可使用此方法,字符串连接,此处使用也无法解决问题)

用法区别如下:

MySql的填充字符串函数LPAD及注意点_第5张图片


结束和声明

以上纯属个人观点和体会,相关的资料和观点来自网络的朋友们!
希望这篇文章能对你有所帮助! 
欢迎大家来一起讨论分享干货,或者批评指正! 
更加热切盼望各路大神前辈给些指导和建议!
转载请注明出处!或者联系我!([email protected]

 

你可能感兴趣的:(心得总结,学习干货,sql)