Sql server SQL Server按子字符串选择查询顺序
SQL Server表中有一列包含以下行: 菌柱:C1_xxx1、C2_xxx1、C3_xxx1、C1_xxx2、C1_xxx3、C3_xxx2等 它是一个文本列,包含以下格式的字符串:CY_mystring,其中Y是一个从1到5的数字,后跟“_”字符,然后是可以有任何值的mystring 是否有方法按以下顺序选择返回此列:Sql server SQL Server按子字符串选择查询顺序,sql-server,Sql Server,SQL Server表中有一列包含以下行: 菌柱:C1_xxx1、C2_xxx1、C3_xxx1、C1_xxx2、C1_xxx3、C3_xxx2等 它是一个文本列,包含以下格式的字符串:CY_mystring,其中Y是一个从1到5的数字,后跟“_”字符,然后是可以有任何值的mystring 是否有方法按以下顺序选择返回此列: C1_xxx1 C1_xxx2 C1_xxx3 ...... C1_xxxn C2_xxx1 ...... C2_xxxn C3_xxx1 ....... C3_xxxn
C1_xxx1
C1_xxx2
C1_xxx3
......
C1_xxxn
C2_xxx1
......
C2_xxxn
C3_xxx1
.......
C3_xxxn
等
由CY_uu子字符串排序
谢谢你你说Y是一个从1到5的数字,它总是一个字符长。假设格式为xY_xxxZ,您可以先按Y再按Z排序,如: 如果Z可以长于一个字符,即10或更高,则可以使用pathindex确定末尾的位数:
order by
substring(MyColumn,2,1) -- Second digit
, right(MyColumn, patindex('%[^0-9]%', reverse(MyColumn))-1) -- Digits at end
你说Y是一个从1到5的数字,它总是一个字符长。假设格式为xY_xxxZ,您可以先按Y再按Z排序,如: 如果Z可以长于一个字符,即10或更高,则可以使用pathindex确定末尾的位数:
order by
substring(MyColumn,2,1) -- Second digit
, right(MyColumn, patindex('%[^0-9]%', reverse(MyColumn))-1) -- Digits at end
这应该可以。。先按前两个字符排序,然后按最后一个字符排序,假设最后的n总是一位数长
这应该可以。。先按前两个字符排序,然后按最后一个字符排序,假设最后的n总是一位数长
我不明白为什么MyColumn的订单不起作用。@Tim Schmelter:因为生活有时候很简单,我们往往会把它弄得很复杂。谢谢,成功了@据我所知,Tim,xxx对每条记录都是任意的,OP需要考虑最后一个字符进行排序。我不明白为什么按MyColumn排序不起作用。@Tim Schmelter:因为生活有时是如此简单,而我们往往会使它变得复杂。谢谢,成功了@据我所知,Tim,xxx对每条记录都是任意的,OP需要考虑最后一个字符进行排序..+1在重读问题后,这看起来像是正确的答案+1在重读问题后,这看起来像是正确的答案
SELECT
Column1
FROM
TABLENAME
ORDER BY
LEFT(Column1,2) ASC,
RIGHT(Column1,1) ASC