SQL order by子句自定义

时间:2018-01-15 20:13:05

标签: sql sql-server

我想运行一个查询,提取我所有的名字,其中有“ana”,但我想要这样的结果

  1. 安娜
  2. 布里安纳
  3. 不喜欢

    1. 布里安纳
    2. 安娜
    3. 表示以“an”开头的名称应首先出现,然后是“an”中包含“an”的任何内容

      我的SQL查询是这样的,但这种情况并没有给我预期的结果。我检查了一些其他的东西,但不太确定如何使用,并没有给出所需的结果。

      SELECT *
      FROM TABLE_NAME
      WHERE  Name LIKE 'ana%'
      AND Name LIKE '%ana%'

1 个答案:

答案 0 :(得分:3)

您需要只选择一次记录然后订购它们并根据您的要求了解您需要使用ORDER BY CASE订购这样的产品

    SELECT *
    FROM TABLE_NAME
    WHERE  Name LIKE '%ana%'
    ORDER BY CASE
	WHEN Name LIKE 'an%' THEN 1
	WHEN Name LIKE '%an%' THEN 2 
	ELSE 3
	END