1

使用 MySQL,有x = 'aa.bb.cc',我怎样才能获得列表'aa.bb.cc', 'aa.bb', 'aa'

x = '39.01',列表是'39.01', '39'

x = '39.02.01.01',列表是'39.02.01.01', '39.02.01', '39.02', '39'

从上面的最后一个例子中x = '39.02.01.01',我希望能够构建类似的东西:

SELECT ... FROM ... WHERE foo IN bar

其中bar是动态获得的('39.02.01.01', '39.02.01', '39.02', '39')

任何想法,将不胜感激。

4

2 回答 2

0

我希望INSTRLOCATE功能可能对您有用:

 SELECT * from TABLE table1 WHERE INSTR(bar, foo) = 1;

或者

 SELECT * from TABLE table1 WHERE LOCATE(foo, bar) =1 ;

这里bar可以是39.02.01.01并且foo可以是子字符串,例如'39.02.01.01', '39.02.01', '39.02', '39'.

于 2012-11-01T17:02:37.333 回答
0

你看过使用 SUBSTRING_INDEX 吗?

像这样的东西:

SELECT SUBSTRING_INDEX(field1,".",4) as One, SUBSTRING_INDEX(field1,".",3) as Two,
 SUBSTRING_INDEX(field1,".",2) as Three, SUBSTRING_INDEX(field1,".",1) as Four FROM Test

如果您的值不都包含相同数量的“分隔符”,那么结果可能不是您想要的,我至少需要再喝几杯咖啡来考虑解决类似问题的方法:-)

于 2012-11-01T17:22:50.710 回答