php中字符串mysql_MySQL中字符串函数的详解

今天在论坛中看到一个关于mysql的问题,问题如下

good_id cat_id

12654 665,569

12655 601,4722

goods_id是商品id

cat_id是分类id

当我,怎么根据这种分类ID查数据(一个商品有多个分类,而且用逗号隔开了)

我现在用的是like 这样的话,输入一个分类id是688,或者4722都能出来这个商品,但输入一个722也出来这个商品了。

如果用like做的话,肯定会有问题的,我的开始的想法是,把cat_id里面的字符串换成数组,这样可以利用mysql里面的in操作,这样就不会出现查找722,而4722类别下的产品都跑出来了。我从网上找了半天,这方面的字符串操作函数,没找到,不过我发现了find_in_set这个函数虽然不能,将字符串转换成数组,但是也不会出现上面的情况。我发现自己有好多函数不知道,所以我从手册中,以及网上收集了半天,做了一些例子。

CHAR_LENGTH(str) 返回str的字符数

7c661af7d11afb25f7d5bfed2b54539c.png

LENGTH(str) 返回str的字节长度

617ba7d65f175dc3d0a2daa95085a664.png

CONCAT(str1,str2....) 返回参数str1,str2....的拼接,有一个null值则返回null

5cdd114cada490d592adc3ef7188bb83.png

CONCAT_WS(x,str1,str2...) ---concat with separator 第一个参数x代表分隔符,后面的参数为字符串

如果x为NULL则返回NULL,如果字符串有NULL会被忽略

902579d9f755272f5370fe7c0e4b4e79.png

INSERT(s1,x,len,s2) 字符串替换 s1 目标字符串 x为s1的开始位置(下标从1开始) len为x之后的长度 s2为需要替换的字符串

如果x超过s1的长度下标,则返回s1,如果len大于x之后剩余字符串长度,则全部替换

a6bd6d541d3d549b83719ad7d14c6e03.png

LOWER(str)、LCASE(str) 字符串转为小写

363a2a8af600aade7e11ae02a96eaa0f.png

UPPER(str)、UCASE(str) 字符串转为大写

6611d74fe83d9f8b3324d4862b14b6db.png

LEFT(str,n) 返回字符串str最左边的n个字符

2843fcf8aa5c08352dc649be7e1d7d4a.png

RIGHT(str,n) 返回字符串str最右边的n个字符

eb89da6f5ab7ec70f7448ddad6be1c5b.png

LPAD(s1,len,s2) 返回s2从s1的左边填充直到总长度为len,如果len

09358394466d7010fbe4e441a8cc8b25.png

RPAD(s1,len,s2) 返回s2从s1的右边填充直至len的长度,如果len

dbb010cdf83b35d08ec0d4419b2dd2a4.png

LTRIM(S) 删除左侧的空格 RTRIM(s) 删除右侧的空格 TRIM(s) 删除两侧的空格

cd9c0fcdd52209fd05823ed9bcf14b1c.png

TRIM(s1 FROM s2) 删除s2两端出现的s1字符串

62bf4c0e6c6a50ac9ff3a92f46394fca.png

REPEAT(s,n) 返回n个s组成的字符串,n<=0,返回空;s或者n为NULL,返回NULL

b7d0800a44b3330067116ff29babb050.png

SPACE(n) 返回n个空格字符串

d72072aba0ac9a66b6c2ec7466d90f51.png

REPLACE(s,s1,s2) 返回--由s2替换s中的所有s1字符串的结果

6b08cba91008701d4585afb3aa97d17c.png

STRCPM(s1,s2) s1==s2 返回0 s1s2 返回1

4a9c6edb0a2c7a0c30ac7fe83aaf0ddc.png

SUBSTRING(s,n,len) 、MID(s,n,len)返回s从n开始的len长度的字符串 ,若n<0,则从s的最后倒数n个开始截取,n=0的话返回空字符串;len可以省略-截取n之后的所有字符

2be247693b396ad8c704ed0ef27ff699.png

5e2d76b67bc441e5825530877ba28ef2.png

LOCATE(str1,str2)、POSITION(str1 IN str2)、INSTR(str2,str1) 返回str1在str2中出现的开始位置

78bdf56d7da56d897ded5ecc59d845cc.png

REVERSE(s) 返回s的字符串的反转

335b4935d9407929feac07821e6eeae8.png

ELT(n,str1,str2,str3...) 返回str1,str2.. 中的第n个字符串 ,n超出返回返回null

d0473fa6fcdaa303b9b81486cd3f496e.png

FIELD(s,str1,str2,str3....) 返回s在str1,str2.....中的第一次出现的位置,没有返回0

3778d704bb0b123ac211ec789747aee8.png

FIND_IN_SET(s,str1) 返回s在str1中的出现的位置,其中str1由多个字符串组成,逗号隔开的列表

c0121010cbfe0204453891da928f50eb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值