2017-08-28 10 views
3

我有一个VARCHAR(30)列,看起来像这样:如何使用数字在varchar列上搜索?

953-41 
975-12 
952-13 
934-34 

柱份额的所有号码的结构:3个数字和一个破折号后面的数字。

我想进行一个查询,就像SELECT * FROM tablename WHERE value = 95341
并且只使用WHERE子句中的数字来获得'953-41'。

我不能更改我的数据库并删除短划线,我需要在行中混合使用我想要的数字和行间的数字值进行搜索。

+0

你能解释一下你的使用情况一个李更多? *为什么*你需要使用95341而不是953-41来搜索? –

+0

这与电话号码有关,这是我可以用于我的项目的最佳方法。我考虑过其他选择,但它们更复杂,我想保持简单 –

回答

3

你可以试试:

MYSQL:

SELECT * FROM tablename WHERE value = INSERT(95341,4,0,'-') 

SQL服务器:

SELECT * FROM tablename WHERE value = STUFF(95341,4,0,'-') 
1

您可以使用此:

SELECT * 
FROM yourTable 
WHERE CAST(REPLACE(colName, '-', '') AS UNSIGNED) = 95341 
+0

有索引使用:P;但它应该工作。 – xQbert

+0

这也有效 –