当前位置: 首页 > 面试题库 >

T-SQL ORDER BY数字和字母混合在字符串中

孔茂
2023-03-14
问题内容

我有一系列 独特的 字符串,其中包含数字,有时还包含数字和一个字母,其中的一个示例为:

  • 1倍
  • 2倍
  • 2年
  • 12倍
  • 20
  • 21岁

数字始终在字母前。产生清单的ORDER BY(T-SQL)子句解决方案是什么?

我尝试使用

LEN( fieldName ), fieldname- 可以使用,但适用于20和21。我尝试将字符串表示为整数,但是CAST在转换过程中失败。


问题答案:

我从这里偷我的细节。

declare @t table(s varchar(25))
insert @t
select '122345684XT' union
select '23339034300-XT' union
select '423432424523242332X' union
 select '422222222111111111232' union
select '423842389034209XYZ' union
select 'ABC'

select 
    left(s,patindex('%[^0-9]%',S+' ')-1 ) nbr 
   ,right(s,len(s)-patindex('%[^0-9]%',S+' ')+1) alpha
from @t

导致

122345684               XT
23339034300             -XT
422222222111111111232   
423432424523242332      X
423842389034209         XYZ
ABC

在您的上下文中使用它。

SELECT * 
FROM YourTable 
ORDER BY left(s,patindex('%[^0-9]%',S+' ')-1 ), 
         right(s,len(s)-patindex('%[^0-9]%',S+' ')+1)

显示方式

declare @t table(s varchar(25))
insert @t
select '12X' union
select '1X' union
select '2X' union
select '2Y' union
select '20' union
select '21'

SELECT * 
FROM @t
ORDER BY CAST(left(s,patindex('%[^0-9]%',S+' ')-1 ) AS INT), 
         right(s,len(s)-patindex('%[^0-9]%',S+' ')+1)

结果是

1X
2X
2Y
12X
20
21


 类似资料:
  • 问题内容: 任何人都可以通过正则表达式来帮助我。我想将以下字符串拆分为字母和数字。 分割后的示例字符串应为 和。 我尝试了以下正则表达式。 大写返回 但对于小写字母则返回 有没有办法得到像 问题答案: 您可以使用: 正则演示

  • 我有一个字符串,例如,AX3YM67。我想把字符串分离为Java中的A,X3,Y,M67。我怎么才能拿到这个?下面的代码是我尝试过的。

  • 问题内容: 我有一个混合数组,需要按字母然后按数字排序 我如何将其排序为: 我努力了 但这只是按字母顺序排序。可以使用直接的JavaScript或jQuery完成此操作吗? 问题答案:

  • 问题内容: 所以我有一个像这样的字符串 我想做的就是分割此字符串,以便得到以下信息: 的作为对所述第三元件是指示所述的单原子性质元件。相同。这实际上是我正在努力的部分。 这是一个化学方程式,因此我需要根据元素的名称和存在的原子数量等来分离元素。 问题答案: 您可以尝试这种方法: 输出: 原子:[C,3,H,20,I,1,O,1] 现在所有偶数索引(0、2、4 …)都是原子,奇数是关联的数字: 输出

  • 问题内容: Python newb在这里。我试图计算给定字符串中字母“ a”的数量。代码如下。它会继续在字符串“ banana”中返回1而不是3。任何输入表示赞赏。 问题答案: 其他答案表明您的代码出了什么问题。但是,如果您不只是为了锻炼,还可以通过内置的方式进行此操作: Danben给出了以下更正版本: 还有其他一些方法,希望它们能教给您更多关于Python的知识! 类似,但循环更短。利用了布尔

  • 问题内容: 我想将以下字符串转换为提供的输出。 我还没有发现,将处理特殊字符,如任何解决方案,,,等。 基本上,我只是想摆脱所有不是字母数字的东西。这是我尝试过的… 尝试多个步骤 结果 任何帮助,将不胜感激。 工作解决方案: 问题答案: 删除非字母数字字符 以下是/正确的正则表达式,用于从输入字符串中去除非字母数字字符: 请注意,这等效于-它包括下划线字符。要删除下划线,请使用例如: 输入格式错误