Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server 在varchar字段上使用ORDER BY时,文本后面将排序什么字符串值_Sql Server_Sql Order By - Fatal编程技术网

Sql server 在varchar字段上使用ORDER BY时,文本后面将排序什么字符串值

Sql server 在varchar字段上使用ORDER BY时,文本后面将排序什么字符串值,sql-server,sql-order-by,Sql Server,Sql Order By,我正在处理一个包含名称列表的表(键入VARCHAR)。由于保密原因,列表中的一些名称将替换为一些文本。对于我们的一份报告,我们正在运行以下查询(名称已被替换以保护无辜者) 我不是在寻找一个新的select语句,而是为[name]单元格寻找一个可能的值,当执行此查询时,该值将导致该行被排序到列表的底部。如果我使用空字符串,它将排序到列表的顶部。如果我使用空格,它会排在列表的顶部。我甚至尝试过使用|字符,因为它的ASCII值比任何文本都高,而且它仍然排在列表的顶部 编辑:另一个标准是,由于此列表数据

我正在处理一个包含名称列表的表(键入VARCHAR)。由于保密原因,列表中的一些名称将替换为一些文本。对于我们的一份报告,我们正在运行以下查询(名称已被替换以保护无辜者)

我不是在寻找一个新的select语句,而是为[name]单元格寻找一个可能的值,当执行此查询时,该值将导致该行被排序到列表的底部。如果我使用空字符串,它将排序到列表的顶部。如果我使用空格,它会排在列表的顶部。我甚至尝试过使用|字符,因为它的ASCII值比任何文本都高,而且它仍然排在列表的顶部

编辑:另一个标准是,由于此列表数据是公共的,所以删除这些名称不会太明显。这意味着没有“zzzzzzz”和“**机密**”价值观。寻找一些不是高喊“绝密”的东西


有什么建议吗?

您可以使用您喜欢的任何值,并通过语句添加到您的
订单中,以强制订购:

  SELECT * from PeopleData
  WHERE [location] = 'Somewhere'
  ORDER BY CASE WHEN [name] = 'Protected Value' THEN 1 ELSE 0 END, Name

您可以更改
CASE
语句以使用一些其他条件,如
屏蔽的
标志值,而不是特定的设置值,如果您想将屏蔽的名称随机化。

您想在末尾放哪一行?我理解您在这里所指的列表当然包含SELECT查询返回的所有行,那么应该始终将哪一行放在末尾?它应该取决于某些条件。用我要查找的字符串值替换名称的行。在列表末尾重复的值不是很明显吗?如果需要,您可以生成随机的假名字,或随机的首字母。@GoatCO:这是一种可能,但我正在寻找一种更便宜的解决方案。我要提到的是,我们用来访问此查询的中间件将按字段的顺序参数化。但是当我通过中间件传递您的ORDERBY子句时,它工作了。
  SELECT * from PeopleData
  WHERE [location] = 'Somewhere'
  ORDER BY CASE WHEN [name] = 'Protected Value' THEN 1 ELSE 0 END, Name