我有点困惑于如何做这件事情。 我有这些值的数据库表:SQL LIKE(反向)
| id | file_type | code | position |
-------------------------------------
| 1 | Order | SO | 1 |
| 2 | Order | 1-SO | 7 |
| 3 | Order | 1_SO | 7 |
现在,我想要得到的位置和我的文件名的文件类型,所以我想出了这个查询:
SET @FileName = '1-SO1234567890.pdf'
SELECT *
FROM tbl_FileTypes
WHERE CHARINDEX(code,@FileName)> 0
可悲的是,我在这里得到两个结果,我只需要具有“1-SO”结果的数据。
| id | file_type | code | position |
-------------------------------------
| 1 | Order | SO | 1 |
| 2 | Order | 1-SO | 7 |
我相信我的WHERE子句会导致这种情况发生。 有没有更好的方式让我获得我想要的结果?
非常感谢您提前。
我是否严重误解了某些东西,或者应该是“SET @FileName ='1-SO1234567890.pdf''? – LittleBobbyTables 2013-03-06 14:42:54
哎呀!我的坏,我现在纠正它。谢谢LittleBobbyTables。 – SyntaxError 2013-03-06 14:45:05
你是测试它'StartsWith'的代码,还是应该是最长的匹配代码或其他东西?基本上,目前还不清楚为什么'1-SO'比'SO'更好匹配 - 请澄清。 – 2013-03-06 14:45:49