Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按字母顺序按大小写排序_Sql_Ruby On Rails_Postgresql - Fatal编程技术网

Sql 按字母顺序按大小写排序

Sql 按字母顺序按大小写排序,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,我正试图根据内存中的i18n键来排序查询。 所以我构建了这个查询: SELECT "workflow_tasks".* FROM "workflow_tasks" ORDER BY CASE WHEN type='Workflow::Tasks::EmailCloseBrothersAboutPersonalDetailsChange' THEN 'Email Close Brothers' WHEN type='Workflow::Tasks::CaptureFinanceProposal'

我正试图根据内存中的i18n键来排序查询。 所以我构建了这个查询:

SELECT  "workflow_tasks".* FROM "workflow_tasks"
ORDER BY CASE
WHEN type='Workflow::Tasks::EmailCloseBrothersAboutPersonalDetailsChange' THEN 'Email Close Brothers'
WHEN type='Workflow::Tasks::CaptureFinanceProposal' THEN 'Record Finance Status'
WHEN type='Workflow::Tasks::SubmitCreditCheck' THEN 'Submit Credit Check'
WHEN type='Workflow::Tasks::UpdateDriverBankDetail' THEN 'Update Driver''s Bank Details'
WHEN type='Workflow::Tasks::UpdateDriverPersonalDetail' THEN 'Update Driver''s Personal Details'
WHEN type='Workflow::Tasks::ValidateInsuranceCertificate' THEN 'Validate Driver''s Insurance Certificate'
END
我希望它能根据
后面的字符串给我一个按字母顺序排列的任务列表,然后

顺序几乎正确,除了
ValidateInsuranceCertificate
updatedDriverPersonalDetails
之前。我一定是误解了
CASE
orderby
中的用法:

我猜你不知何故没有得到确切的匹配。首先,我想说:

SELECT wf.*,
       (CASE WHEN type = 'Workflow::Tasks::EmailCloseBrothersAboutPersonalDetailsChange' THEN 'Email Close Brothers'
             WHEN type = 'Workflow::Tasks::CaptureFinanceProposal' THEN 'Record Finance Status'
             WHEN type = 'Workflow::Tasks::SubmitCreditCheck' THEN 'Submit Credit Check'
             WHEN type = 'Workflow::Tasks::UpdateDriverBankDetail' THEN 'Update Driver''s Bank Details'
             WHEN type = 'Workflow::Tasks::UpdateDriverPersonalDetail' THEN 'Update Driver''s Personal Details'
             WHEN type = 'Workflow::Tasks::ValidateInsuranceCertificate' THEN 'Validate Driver''s Insurance Certificate'
         END) as sortkey
FROM "workflow_tasks" wf
ORDER BY sortkey;

您的查询中有一个输入错误,描述了
类型

你有:

WHEN type='Workflow::Tasks::UpdateDriverBankDetail'
但是数据库屏幕截图中的类型是复数。因此,你应该:

WHEN type='Workflow::Tasks::UpdateDriverBankDetails'

可能会有更多的打字错误,但截图会截断数据

嗨,戈登,谢谢你的回复。您的from子句(wf而不是wt)上有一个拼写错误。但同样的结果是,出于某种原因,V排在U之前。有一件事可能会让这更清楚,那就是使用数字而不是alpha<代码>然后是0
然后是1
等等。至少清除了一些意图?