/*Navicat MySQL Data Transfer
Source Server : test
Source Server Version : 50528
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50528
File Encoding : 65001
Date: 2015-03-13 11:25:34*/
SET FOREIGN_KEY_CHECKS=0;--------------------------------Table structure for queryreptycode------------------------------
DROP TABLE IF EXISTS`queryreptycode`;CREATE TABLE`queryreptycode` (
`id`int(11) NOT NULL,
`code`varchar(50) DEFAULT NULL,
`codeRepty`varchar(50) DEFAULT NULL,PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;--------------------------------Records of queryreptycode------------------------------
INSERT INTO `queryreptycode` VALUES ('1', '1', '1');INSERT INTO `queryreptycode` VALUES ('2', '2', '2;3;4;1;');INSERT INTO `queryreptycode` VALUES ('3', '3', '1;');
数据为:
sql
select DISTINCT Q1.id,Q1.code,Q1.codeRepty from queryreptycode as Q1 INNER JOINqueryreptycodeasQ2where INSTR(Q1.`code`,'%'+Q2.codeRepty+'%')
执行结果
原理:
函数INSTR会告诉用户,其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。
其具体的语法格式如下:
INSTR(string,substring[,start[,occurrence]])
其中:
string待查询的字符串
substring正在搜索的字符串
start说明开始搜索的字符位置。默认值是1,就是说,搜索将从字符串的第一个字符开始。如果,参数为负则表示搜索的位置从右边开始计算,而不是默认的从左边开始
occurrence指定试图搜索的子串的第几次出现,默认值是1,意味着希望其首次出现
该函数反馈一索引顺序值,在该位置发现了要搜索的子串。下面的例子指出了INSTR函数的使用情况:
INSTR(‘AAABAABA’,’B’)=4
INSTR(‘AAABAABA’,’B’,1,2)=7