这让我很困惑,我想我会将其提交给 SO 社区寻求帮助。
用户想要选择以某个 ID 开头的所有订单,例如:
123会回来123, 12345, 1238790等等。但是 ID 是一个 int 列。
我正在使用 nHibernate,目前我的线路是:
criteria.Add(Restrictions.Eq("Id", itemId));
但这只会返回 123。我可以执行 Restrictions.Like,但这会转换为 SQL LIKE 子句,并且不适用于 int col。
有任何想法吗?
编辑:抱歉,数据库是 SQL Server 2008
不幸的是,你没有指定什么数据库您正在使用(SQL 只是查询语言......),但如果您使用的是 SQL Server(Microsoft RDBMS 产品),那么您可以创建类型的计算列VARCHAR(15)
保存您的字符串表示形式INT
,然后就搜索那个......
ALTER TABLE dbo.YourTable
ADD IdAsString AS CAST(Id AS VARCHAR(15)) PERSISTED -- PERSISTED might not work - depending on your version of SQL Server
SELECT (list of columns)
FROM dbo.YourTable
WHERE IdAsString LIKE '123%'
这是否真的具有商业意义,是一个完全不同的故事……(我同意奥德和马特·鲍尔的观点……)
但由于现在这是一个字符串列,您应该能够使用您的Restrictions.Like
正如你提到的,NHibernate 中的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)