Infelizmente, você não especificou qual banco de dados você está usando (SQL é apenas a linguagem de consulta...), mas se você estiver no SQL Server (o produto Microsoft RDBMS), poderá criar uma coluna computada do tipo
VARCHAR(15) para manter uma representação de string de seu INT
, e depois é só pesquisar sobre isso ....
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%'
Se isso realmente faz sentido para os negócios, é uma história totalmente diferente..... (concordo com Oded e Matt Ball...)
Mas como essa é uma coluna de string agora, você deve poder usar seu Restrictions.Like
abordagem no NHibernate como você mencionou.