2013-07-05 64 views
3

如何查找MySQL中另一个字符串(列)中字符串的第一个位置,不区分大小写?MySQL中的stripos相当于

我希望能够根据这个返回的数字进行排序 - 字符串位置。

回答

5

您可以使用INSTR(str,substr)

返回字符串strsubstr中第一次出现的位置。这与LOCATE()的双参数形式相同,只是参数的顺序相反。

SELECT INSTR('foobarbar', 'bar'); 
    -> 4 
SELECT INSTR('xbar', 'foobar'); 
    -> 0 
+2

感谢这样一个快速和详细的答案。 – silkfire

3

结账INSTR。它应该让你这样做。

+0

谢谢,正是我一直在寻找的。现在谁来接受? :) – silkfire

+0

@silkfire如果答案几乎相同,我通常会和第一个人或最详细的人一起去。 –

+1

@DannyBeckett好吧,因为我非常喜欢英国人:)你走了。每个人都有3个赞赏,够公平吗? – silkfire

3

尝试使用上整理Locate()

SELECT LOCATE('bar', 'fooBARBAR'); // return 4 

此外,MySQL的比较基础。例如。

SET NAMES 'binary'; 
SELECT LOCATE('bar', 'fooBARBAR'); // return 0 

请记住它。

另外,请阅读Case Sensitivity in String Searches

+1

古怪,它与'INSTR()'的功能相同,但是参数相反。我喜欢首先有列名,但是,更合乎逻辑的方式。 – silkfire

+0

@silkfire,请阅读上面的链接:) – sectus