我有一个VARCHAR(30)列,看起来像这样:如何使用数字在varchar列上搜索?
953-41
975-12
952-13
934-34
柱份额的所有号码的结构:3个数字和一个破折号后面的数字。
我想进行一个查询,就像SELECT * FROM tablename WHERE value = 95341
并且只使用WHERE子句中的数字来获得'953-41'。
我不能更改我的数据库并删除短划线,我需要在行中混合使用我想要的数字和行间的数字值进行搜索。
我有一个VARCHAR(30)列,看起来像这样:如何使用数字在varchar列上搜索?
953-41
975-12
952-13
934-34
柱份额的所有号码的结构:3个数字和一个破折号后面的数字。
我想进行一个查询,就像SELECT * FROM tablename WHERE value = 95341
并且只使用WHERE子句中的数字来获得'953-41'。
我不能更改我的数据库并删除短划线,我需要在行中混合使用我想要的数字和行间的数字值进行搜索。
你可以试试:
MYSQL:
SELECT * FROM tablename WHERE value = INSERT(95341,4,0,'-')
SQL服务器:
SELECT * FROM tablename WHERE value = STUFF(95341,4,0,'-')
您可以使用此:
SELECT *
FROM yourTable
WHERE CAST(REPLACE(colName, '-', '') AS UNSIGNED) = 95341
有索引使用:P;但它应该工作。 – xQbert
这也有效 –
你能解释一下你的使用情况一个李更多? *为什么*你需要使用95341而不是953-41来搜索? –
这与电话号码有关,这是我可以用于我的项目的最佳方法。我考虑过其他选择,但它们更复杂,我想保持简单 –