这是使用MySQL以逗号分隔的列中包含引号的查询-mysql>selectconcat("'",replace(Name,",","','"),"'")ASIncludingQuotesfromDemoTable1407。
0x0f 是16进制常量。例如与&同用。&表示按位与 *** 作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0×31 &0x0f的结果为0×01。
默认值以外的分隔符;通常用于定义函数、存储过程和触发器,其中必须定义多个语句。定义不同的分隔符,如$$用于定义整个过程的结束,但在它内部,每个语句都由“..”这样,当代码在mysql客户端,客户端可以知道整个过程在哪里结束,并作为一个单元执行它,而不是在内部执行单个语句。注意,DELIMITER关键字是命令行的函数。mysql客户端(和其他一些客户端)仅限于,而不是常规的MySQL语言特性。如果您试图将它通过编程语言API传递给MySQL,它将无法工作。
?首先我们建立一张带有逗号分隔的字符串。
CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL)
然后插入带有逗号分隔的测试数据
INSERT INTO test(pname,pnum) VALUES('产品1','1,2,4')
INSERT INTO test(pname,pnum) VALUES('产品2','2,4,7')
INSERT INTO test(pname,pnum) VALUES('产品3','3,4')
INSERT INTO test(pname,pnum) VALUES('产品4','1,7,8,9')
INSERT INTO test(pname,pnum) VALUES('产品5','33,4')
查找pnum字段中包含3或者9的记录
mysql>SELECT * FROM test WHERE find_in_set('3',pnum) OR find_in_set('9',pnum)
+----+-------+---------+
| id | pname | pnum|
+----+-------+---------+
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
2 rows in set (0.03 sec)
使用正则
mysql>SELECT * FROM test WHERE pnum REGEXP '(3|9)'
+----+-------+---------+
| id | pname | pnum|
+----+-------+---------+
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
| 5 | 产品5 | 33,4|
+----+-------+---------+
3 rows in set (0.02 sec)
这样会产生多条记录,比如33也被查找出来了,不过MYSQL还可以使用正则,挺有意思的
find_in_set()函数返回的所在的位置,如果不存在就返回0
mysql>SELECT find_in_set('e','h,e,l,l,o')
+------------------------------+
| find_in_set('e','h,e,l,l,o') |
+------------------------------+
|2 |
+------------------------------+
1 row in set (0.00 sec)
还可以用来排序,如下
mysql>SELECT * FROM TEST WHERE id in(4,2,3)
+----+-------+---------+
| id | pname | pnum|
+----+-------+---------+
| 2 | 产品2 | 2,4,7 |
| 3 | 产品3 | 3,4 |
| 4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
3 rows in set (0.03 sec)
如果想要按照ID为4,2,3这样排序呢?
mysql>SELECT * FROM TEST WHERE id in(4,2,3) ORDER BY find_in_set(id,'4,2,3')
+----+-------+---------+
| id | pname | pnum|
+----+-------+---------+
| 4 | 产品4 | 1,7,8,9 |
| 2 | 产品2 | 2,4,7 |
| 3 | 产品3 | 3,4 |
+----+-------+---------+
3 rows in set (0.03 sec)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)