sql string转为日期_SQL之变身Excel(二)

0a790eb921ae014420824d18069dea59.png

字字珠玑的SQL如何言之凿凿?

上一篇文章我们大略介绍了在SQL中如何“绅士地“对待日期函数,今天就来讲讲对于文本数据的处理方式。

世界大同

相信处理过英文文本的朋友都知道大小写和空格的痛:

很多计算机语言在处理文本时不但要区分字母大小写,连一个小小的空格都不放过!

而今天,我们就先来看看如何一劳永逸地利用SQL解决检索时需要分辨大小写的问题:

upper(大写)将string(串)转换为大写:

UPPER

lower(小写)将string(串)转换为小写:

LOWER

string即为字符串,通常需要用单/双/三引号标注。具体使用哪种引号需具体问题具体分析,但很多情况下···

都是看心情【不

突然来介绍个在SQL中测试“新姿势”的小技巧:

使用SELECT语句。

大小写SELECT举例

虽然SELECT通常用来从表中检索数据,但通过省略FROM子句就可以简单地访问和处理表达式。来一起看个例子:

SELECT 

3825b04b3a36d670ecedc1a693c72c15.png

当然,这两个函数只适用于外文以解决大小写不统一的问题,对汉字是无效的:

SELECT 

e1ffe71da45c29a952ba05407264a076.png

万宗归一

不过不必觉得沮丧,SQL的不少文本函数也是支持汉字的【其实是支持string(串)】,比如将几个字符串拼接在一起:

CONCAT

Concat(拼接),可以拼接串:

CONCAT

简单的可以直接用SELECT语句测试:

SELECT 

711d80e789e948f903d7554334a0f4a8.png

但为什么不来皮一下建个表呢~

建个表

CREATE 

52a9fc7eafd2285b4297bfd230dc8a63.png

拼接举例

SELECT 

0a0ec648267afb2a299079c3618b8392.png

除去拼接,我们还可以在当前的表格中进行对文本数据的选择。

LEFT

Left(左)返回串左边选定多少的字符串:

LEFT

RIGHT

Right(右)返回串右边选定多少的字符串:

RIGHT

LENGTH

Length(长度)返回串的字节长度:

LENGTH

LOCATE

Locate(定位)找出串的一个子串。start(开始)是指开始搜索的位置,不是必填项,默认为

LOCATE

其中,substring为只想要检索的子串,string是原文本,start是位置(数字),留意空格也是算一个位置的。

这里还要啰嗦一句,SQL只会返回找到的第一个子串的位置,比如我们试图从“我是谁,我在哪儿,我要干什么?“中定位”我“。

SELECT 

1be3249c83c01b2e36b260f81fe1a86f.png

但如果我们从第四个位置开始搜索的话:

SELECT 

ba72262f8ea35551d2dcfb8deba27aae.png

就变成第五个了。

LTRIM

Ltrim(左,修剪)去掉串左边的空格:

LTRIM

RTRIM

Rtrim(右,修剪)去掉串右边的空格:

RTRIM

SUBSTRING

Substring(子,串)返回子串的字符。这里,length(长度)指的是想要提取出来的字节长度,不是必填项:

SUBSTRING

一鼓作气式举例

我们来看一下,根据刚才的表格“健身使人饥饿”,我们来如何:

  • 返回状态栏自左向右的前两位字符;
  • 测算想法栏的各项字节长度;
  • 返回想法栏从第二个字符开始的子串。
SELECT 

d6f782c3f73b7062547a53aea26e6413.png

大家可能会注意到,在计算想法栏的长度时,一个汉字算了三个字符长,遇到这个问题,我们可以用char_length(字符长度)来解决:

字符长度举例

SELECT 

9d66930b71ee05ae1229674248cff326.png

似是而非

最后再来啰嗦个···似乎又是只有英文才能用的函数。

SOUNDEX。

它可以将任何文本串转换为描述其语音表示的字母数字模式。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但MySQL(就像多数DBMS一样)都提供对SOUNDEX的支持。

辨音举例

假如我们有这样一张表:

ca99f56bd3a17df39732091988a7baf2.png

此数据来源自网络。

再假如我并不确定"Y Lee"的发音,那么我就可以用似是而非的"Y Lie"来进行搜索:

SELECT 

上述代码能匹配所有发音类似于Y.Lie的联系名:

e28dd72c8b05b0cc87f05faf2fca5b11.png

在这个例子中,WHERE子句使用Soundex()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和 Y.Lie发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤出了所需的数据。

小结

来总结一下今天所学的文本函数:

  • Left( ) 返回串左边的字符
  • Right( ) 返回串右边的字符
  • Length( ) 返回串的长度
  • Locate( ) 找出串的一个子串
  • Lower( ) 将串转换为小写
  • Upper( ) 将串转换为大写
  • LTrim( ) 去掉串左边的字符
  • RTrim( ) 去掉串右边的字符
  • Soundex( ) 返回串的SOUNDEX值
  • SubString( ) 返回子串的字符

希望上文可以帮助大家对SQL的文本函数有个初步的了解,如果还是有什么疑问或是建议的话,欢迎留言询问~

祝各位学习愉快!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值