热门搜索: ecshop    php    php函数    css学习    javascript    js    

mysql 查找匹配多个字段里的内容

时间:2016-02-01 14:20 文章来源:未知 点击次数:

mysql 查找匹配多个字段里的内容我们通常可以用contact_ws函数来处理。

下面我们先来看下该函数的原理。

CONCAT_WS(separator,str1,str2,...)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意:
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

如下例子。其中的分隔符为/。

SELECT * FROM wemall_order WHERE CONCAT_WS('/',consignee,phone,orderid) LIKE '%1512101032433%'

原理就是,三个字段中consignee,phone,orderid,只要有一个和1512101032433匹配就会返回查找到的数据,而不会返回null

 

concat_ws和concat的处理方式是不同的。

concat它是MySQL的concat函数可以连接一个或者多个字符串,如
mysql> select concat('10');
+--------------+
| concat('10') |
+--------------+
| 10           |
+--------------+
1 row in set (0.00 sec)
 
mysql> select concat('11','22','33');
+------------------------+
| concat('11','22','33') |
+------------------------+
| 112233                 |
+------------------------+
 
1 row in set (0.00 sec)
 
Oracle的concat函数只能连接两个字符串
 
SQL> select concat('11','22') from dual;

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
 
mysql> select concat('11','22',null);
+------------------------+
| concat('11','22',null) |
+------------------------+
| NULL                   |
+------------------------+
1 row in set (0.00 sec)
 
而Oracle的concat函数连接的时候,只要有一个字符串不是NULL,就不会返回NULL
 
SQL> select concat('11',NULL) from dual;
CONCAT
--
11

说到这里,我想我们对于mysql多个字段的内容进行匹配就有了一定的了解了。

 

    热门排行