这让我感到难过,并认为我会向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(MicrosoftRDBMS产品),则可以创建类型为计算列的VARCHAR(15)来保存您的字符串表示形式INT,然后在该字符串上进行搜索…。
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%'
这是否真的具有商业意义,是一个完全不同的故事.....(我同意Oded和Matt Ball …)
但是由于这是现在的字符串列,因此您应该能够Restrictions.Like在NHibernate中使用您提到的方法。
Restrictions.Like