这是我整个脚本通过CHARINDEX Sql Server的
CREATE TABLE #TEST (
STATE CHAR(2))
INSERT INTO #TEST
SELECT 'ME' UNION ALL
SELECT 'ME' UNION ALL
SELECT 'ME' UNION ALL
SELECT 'SC' UNION ALL
SELECT 'NY' UNION ALL
SELECT 'SC' UNION ALL
SELECT 'NY' UNION ALL
SELECT 'SC'
SELECT *
FROM #TEST
ORDER BY CHARINDEX(STATE,'SC,NY')
有关订单我要显示所有记录问题开始with SC first
和second with NY
然后休息来没有任何顺序。
当我执行上面的sql,那么首先所有记录来与ME
这是不是在我的顺序列表。
告诉我我犯的错误。谢谢。
感谢。为什么这个查询'SELECT * FROM #TEST ORDER BY CHARINDEX(STATE,'SC,NY')DESC' return wrong result。它与您的查询相比有点不同。在你的情况下,你先写'NY,然后写SC',然后我写出相反的结果,然后看到错误的结果。可以更详细地解释发生了什么事情。谢谢 – Mou
'SC'中'SC'的'CHARINDEX','NY'将给出'1','NY'给出'4'。这就是为什么我将它更改为“NY,SC”,所以SC将给出4和NY 1.现在DESC将优先给予'SC',然后给予'NY',然后给予任何不匹配的字符。 – ughai
当它发现不匹配时,它返回0;请参阅我答案中的链接。另外,尝试添加CHARINDEX调用(你的和Ughai的)到你的SELECT,看看它返回什么... – MatBailie