是否仍然按名称对列进行排序,并忽略作为某些项的引号?
例如:
“这很酷”
另一篇文章
第2条
你好
将排序为:
另一篇文章
第2条
您好
“这很酷”
报价已在数据库中......
答案 0 :(得分:5)
取决于您使用的语言。在MS SQL中,我使用REPLACE命令。因此,如果我有一个表,用户,我正在排序的列名,我这样做会删除字符串中的所有双引号:
SELECT *
FROM dbo.Users
ORDER BY REPLACE(firstName, '"', '')
答案 1 :(得分:3)
一种可接受的技巧,比基于TRIM()或REPLACE()的解决方案更快,只关注第一个字符是引号(或者扩展名为非字母数字字符)。
ORDER BY CASE LEFT(myCol, 1)
WHEN '"' THEN REPLACE(myCol, '"', '')
ELSE myCol
END CASE
通常,对于更大的数据集,这种处理应该在加载时完成,例如添加用于查询目的的列而不是用于显示目的的列。
答案 2 :(得分:2)
SELECT * FROM yourTable ORDER BY TRIM(BOTH '"' FROM title);
答案 3 :(得分:1)
SELECT *
FROM table
ORDER BY CASE WHEN len(col) >= 2
THEN REPLACE(LEFT(COL, 1), '"', '')
+ RIGHT(LEFT(col, LEN(col)-1), LEN(LEFT(col, LEN(col)-1))-1)
+ REPLACE(RIGHT(col, 1), '"', '')
ELSE col
END
在ORDER BY
中,我通过将'替换'在'1st&最后一个字符''。当然,只有当col length> = 2时才有效。
答案 4 :(得分:0)
SELECT name
FROM myTable
ORDER BY replace(name, '"', '')