一尘不染

如何在整数列上指定“ ike”?

sql

这让我感到难过,并认为我会向SO社区提出帮助。

用户想要选择所有以特定ID开头的订单,例如:

123 将返回 123123451238790 等ID然而int列。

我正在使用nHibernate,目前我的行是:

criteria.Add(Restrictions.Eq("Id", itemId));

但这只会使我返回123。我可以执行Restrictions.Like,但是它将转换为SQL LIKE子句,并且在int col上不起作用。

有任何想法吗?

编辑:对不起,该数据库是SQL Server发行日为2008


阅读 226

收藏
2021-03-08

共1个答案

一尘不染

不幸的是,您没有指定要使用的 数据库 (SQL只是查询语言…。),但是如果您使用的是SQL Server(MicrosoftRDBMS产品),则可以创建类型为计算列的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中使用您提到的方法。

2021-03-08