gpt4 book ai didi

mysql - 在 Nhibernate 中订购一个像数字一样的字符串

转载 作者:行者123 更新时间:2023-11-29 02:30:59 24 4
gpt4 key购买 nike

我有一个字段是字符串而不是 int,仅仅是因为可能有这样的情况:

1, 2, 3, 3A, 5, 6 ...

现在,orderby 在某种程度上工作正常,但不如预期:

1
10
11
111
12
2
20
3

任何人有这样做的想法吗?我的数据库是 MySQL。我在其他问题上注意到了这个解决方案..

ORDER BY category_id + 0

我如何在 Fluent Nhibernate 中实现它?

编辑

澄清一下,要求的顺序应该是:

1
2
3
3A
10
11
12
20
111
...

编辑 2

另请注意,它可能不仅是 3A,还可能有更多输入,例如:3B、3C。

那么顺序是:

1
2
3
3A
3B
3C
10
11
...

最佳答案

您可以将此列映射两次。一次完全用于所有操作。一次仅用于“选择”和订购。在 XML 映射中,它看起来像这样:(列名是 [AsNumber])

<property name="AsString" column="AsNumber"  />
<property name="AsNumber" insert="false" update="false"
formula="(CAST ( CASE WHEN ISNUMERIC([AsNumber]) &lt;&gt; 0 THEN [AsNumber] ELSE '99999999' END as int))"
/>

我使用的语法来自 MS SQL Server。它试图解决像上面的“3A”这样的案例。它会被简单地转换成一些大的值...

请注意“AsNumber”已将插入和更新设置为 false。和 C# 类片段:

public virtual string AsString { get; set; }
public virtual int AsNumber { get; set; }

我已经对其进行了测试并且它正在运行。我相信在流利的语言中使用类似的东西不会花你很长时间......

关于mysql - 在 Nhibernate 中订购一个像数字一样的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13208835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com