我有一列包含字符串'Operator(1)',依此类推,直到到目前为止'Operator(600)'。

我想按数字顺序排列它们,然后我想出了

select colname from table order by 
cast(replace(replace(colname,'Operator (',''),')','') as int)

这非常丑陋。

更好的建议?

===============>>#1 票数:2 已采纳

就是这样,InStr()/ SubString(),将Operator(1)更改为Operator(001),将n分别存储在Operator(n)中,或创建一个计算列来隐藏丑陋的字符串操作。 您所拥有的似乎还不错。

===============>>#2 票数:1

如果确实需要保留数据格式-并添加数字排序顺序列是更好的解决方案-然后考虑将文本操作包装在用户定义的函数中。

通过dbo.udfSortOperator(colname)从表顺序中选择colname

它不那么丑陋,可以给您一些抽象。 函数调用会产生额外的开销,但是在命中率不太高的数据库服务器中包含数千行的表上,这并不是主要问题。 在功能中记下注释,以便以后根据需要进行优化。

===============>>#3 票数:0

索引计算列

如果发现自己经常在operator列上排序或以其他方式查询operator列,请考虑为其数值创建一个计算列并为其添加索引。 这将为您提供一个计算/持久列(听起来像oxymoron,但不是)。

===============>>#4 票数:0

我的答案是改变问题。 如果可能的话,我会在表中添加一个operatorNumber字段。 更改更新/插入例程以提取数字并存储它。 这样,字符串转换命中每个记录仅一次。

每次运行查询时,排序逻辑都将要求字符串转换。

===============>>#5 票数:0

好吧,首先定义该列的含义。 运算符是一个名称,以便您可以使用char进行辩解吗? 还是数字?

如果该字段是名称,则将使用字符,然后将要确定固定长度。 在所有运算符名称的左边加零。 定义运算符的命名规则(即,禁止使用letter。或者您将在“ A001”等系列中​​使用的代码)

索引将对服务器中的物理数据进行排序。 正确定义的文本命名将对查询进行排序。 你们两个都想要。

如果运算符是数字,则该列的数据类型错误,需要更改。

  ask by Vinko Vrsalovic translate from so

未解决问题?本站智能推荐:

1回复

SQL Server中的字母数字和数字排序

我需要对字母数字和数字排序应用排序。 例: 我需要这样的结果: 我已应用以下代码进行排序: 得到的结果如下:
3回复

在SQL Server中对字母数字列进行排序

我的数据就是这样 我想这样 这是我在SQL Server中使用过的代码,但无法正常工作
5回复

Sql Server 2008中的字母数字排序

任何人都可以帮我解决这个问题吗? 我有一个动态的模式列表,我想要排序,它包含字母数字值和字母。 结果显示如下: 但我要展示的就是这样的结果:
4回复

SQL Server-基于字符串和数字的排序列

我有一个包含一列的表,其中包含字符串和数字的组合,如下所示。 我需要按降序或升序对名称列进行排序,但是问题是,当我使用ORDER BY时,它没有按预期排序 我的查询如下所示 我的预期结果如图所示 任何人都可以帮我这个
3回复

如何对不带特定格式的数字和字母的varchar排序?

我有一列名为MR的varchar。 当我使用ORDER BY运行查询时,似乎没有正确排序。 结果: 为什么MR200011在MR20002之前显示? 关于我如何正确分类的任何想法的人? MR的格式不固定。
3回复

如何在sql server中基于两个不同的(文本和数字)条件对数据进行排序?

我有一个Emp表,其中包含以下数据。 像这样,我有1000条记录,我需要按Deptid列和Location对其进行排序。 排序后的结果应该是这样的(如果我按deptid和location=Mumbai排序): 如果deptid = 10拥有300条记录(其中150条德里,10
3回复

获取从Sql Server中的某个字母开始按字母顺序排序的记录

在SQLSERVER / MSSQL中,问题出在这里: 我想要从'I'字母开始按字母顺序排序的记录。 结果示例: 'Ioren''Iumen''Tart''Arfen''Coldry' 我不想使用union或更多的sql语句..只是尝试通过特殊子句的命令来捕获它。
7回复

如何在SQL特定列中按字母数字值排序

您好,我有上面的表格。 尝试订购此表的列(Registration_no)时实际上遇到问题,请帮助我根据其(Registration_no)列对其进行订购 其他列的排列方式无关紧要。 我只希望我的Registration_no列按这样的特定顺序排列
2回复

在SQL中对字母数字列进行排序

我想在SQL Server中对下面的字母数字列进行排序。 我想按升序排序输出如下: 有什么技巧可以使其正确排序吗?
1回复

通过升序字母数字字段SQL进行排序

我需要通过升序一个字母数字字段(SQL Server)进行排序。该字段的名称为OPE_libelle,您可以从数据库中看到摘录。 为此,我创建了一个仅保留数字的函数(FN_RESTRICT),但我想仅在简单的OP(OP 10变为10,OP 4500变为4500 ...)时保留数字,并且对