什么是MS SQL Server功能类似于MySQL FIELD()函数?
发布时间:2020-12-12 16:47:24 所属栏目:MsSql教程 来源:网络整理
导读:MySQL提供了一个名为 FIELD()的字符串函数,它接受可变数量的参数.返回值是剩余列表中第一个参数的位置.换一种说法: FIELD('d','a','b','c','d','e','f') 将返回4,因为’d’是第一个之后的第四个参数. 此功能提供了根据特定顺序对查询结果进行排序的功能.对于
MySQL提供了一个名为
FIELD()的字符串函数,它接受可变数量的参数.返回值是剩余列表中第一个参数的位置.换一种说法:
FIELD('d','a','b','c','d','e','f') 将返回4,因为’d’是第一个之后的第四个参数. 此功能提供了根据特定顺序对查询结果进行排序的功能.对于我当前的应用程序,我需要经理有四种状态:活动,批准,拒绝和提交.但是,如果我只是通过状态列进行排序,我觉得由于被拒绝和活动状态项比提交和批准的项更重要,因此结果列表的可用性被减少了. 在MySQL中我可以这样做: SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status,'rejected','active','submitted','approved') 结果将被命令为被拒绝的项目是首先,其次是活动的,等等.因此,结果被排除在访问者的重要程度. 我可以创建一个单独的表,列出状态的这个重要性级别,然后按照降序排序查询,但是从我切换到MS SQL Server以来,我已经出现了几次,所以我以为我会询问无论我是否可以使用类似于MySQL的FIELD()的内置函数来避免额外的表和更复杂的查询. 谢谢, 解决方法使用 CASE expression(SQL Server 2005):ORDER BY CASE status WHEN 'active' THEN 1 WHEN 'approved' THEN 2 WHEN 'rejected' THEN 3 WHEN 'submitted' THEN 4 ELSE 5 END 您可以使用此语法进行更复杂的评估(包括组合,或者如果需要使用LIKE) ORDER BY CASE WHEN status LIKE 'active' THEN 1 WHEN status LIKE 'approved' THEN 2 WHEN status LIKE 'rejected' THEN 3 WHEN status LIKE 'submitted' THEN 4 ELSE 5 END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |