如何返回mysql中的所有匹配项,其中值出现在位置n的字符串中?

时间:2013-01-04 15:34:12

标签: mysql phpmyadmin position substring where-clause

我想在phpmyadmin(mysql)中运行一个查询,它会在字符串中的特定位置检查表格中的特定值,我是mysql的新手,这是我尝试过的但是有一个语法问题。我希望在第5位找到值“1”并显示所有拥有此值的用户。

SELECT* 
FROM`user` 
WHERE`options`LOCATE(`options`,1,5) 
LIMIT 0 , 30

的问候, 筒仓

3 个答案:

答案 0 :(得分:3)

Locate用于在字符串中查找值ANYWHERE。您只想要一个特定的位置,因此请改用substr()

SELECT * 
FROM user
WHERE substr(options, 5, 1) = '1'

答案 1 :(得分:0)

你可以尝试

SELECT* 
FROM`user` 
WHERE options LIKE '____1%'
LIMIT 0 , 30

答案 2 :(得分:0)

另一个;)

SELECT * 
FROM user
WHERE instr(options, '1') = 5

Duh ..好吧不行,因为它只返回第一个发生的事情:$但是检查参考,

示例数据:

COL1    COL2
G11     112
G11-1   0
G11-2   2
G12-2   111

查询1:

-- to check on varchar columns
SELECT * 
FROM tablex
where locate('1',col1,5)
;

varchar上的结果:

COL1    COL2
G11-1   0

查询2:

-- to check on int columns
SELECT * 
FROM tablex
where locate(1,col2,2)
;

结果:

COL1    COL2
G11     112
G12-2   111