Sql 按顺序排序时,是否将数值放在底部?

Sql 按顺序排序时,是否将数值放在底部?,sql,sql-server,Sql,Sql Server,问题是,我不擅长sql查询。当我想在mssql中执行order by时,我想把数值放在底部 我的问题是: SELECT DISTINCT code,value FROM code_value WHERE code = 'BR' ORDER BY value 我得到的结果是 code value BR 122333 BR 1455577 BR 193 Your Kart BR Junglee BR Kart Info BR Snapdeal BR Your Ka

问题是,我不擅长sql查询。当我想在mssql中执行order by时,我想把数值放在底部

我的问题是:

SELECT DISTINCT code,value 
FROM code_value 
WHERE code = 'BR' 
ORDER BY value
我得到的结果是

code value
BR   122333
BR   1455577
BR   193 Your Kart
BR   Junglee
BR   Kart Info
BR   Snapdeal
BR   Your Kart
我希望输出如下

code value
BR   Junglee
BR   Kart Info
BR   Snapdeal
BR   Your Kart
BR   122333
BR   1455577
BR   193 Your Kart
是否有任何解决方法可以实现这一点

ORDER BY 
case when string_value like '[0-9]%' then 1 else 0 end,string_value
编辑


另一种在特定示例中有效的方法是使用自定义函数

CREATE Function [dbo].[RemoveNonNumericCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^0-9]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
End
然后,在您的上下文中:

SELECT DISTINCT code,value 
FROM code_value 
WHERE code = 'BR' 
order by dbo.RemoveNonNumericCharacters(value), value

请注意,在特定示例的范围之外,此解决方案可能无法按预期工作。示例:如果值在字符串中的某个位置包含数字,但不是以数字值开头。要处理这种情况,必须修改函数。

如果指定了select DISTINCT,则ORDER BY items必须出现在选择列表中-他可能应该在另一个执行排序的查询中包装select DISTINCT。包装后,执行了如下操作:选择字符串\u值,itm_项目_属性中的属性_代码,其中组织_id=590,属性_代码='BRAND'和字符串_值,从itm_项目_属性中选择不同的字符串_值,当字符串_值如'[0-9]'时,按大小写排序,然后1或0结束,字符串_value@w0lf这没用。当我触发查询时,我并没有得到唯一的值,也就是说,我得到了多个值。有什么解决办法吗that@Madhivanan谢谢,这很有效。顺便说一句,如果您不介意的话,您能解释一下top 100%吗?当您创建一个包含ORDER BY子句的派生表时,您需要使用top运算符,当您需要所有行时,您需要使用100%。t是派生表的别名
SELECT DISTINCT code,value 
FROM code_value 
WHERE code = 'BR' 
order by dbo.RemoveNonNumericCharacters(value), value