Oracle T-SQL到PL-SQL-在同一搜索中使用null和like,但只有null语句起作用
我需要将sql server上的一些搜索更改为oracle数据库 在下面的查询中,如果搜索为null,则返回所有记录;如果用户搜索特定名称,则仅返回名称 SQL SERVER:Oracle T-SQL到PL-SQL-在同一搜索中使用null和like,但只有null语句起作用,oracle,tsql,plsql,Oracle,Tsql,Plsql,我需要将sql server上的一些搜索更改为oracle数据库 在下面的查询中,如果搜索为null,则返回所有记录;如果用户搜索特定名称,则仅返回名称 SQL SERVER: SELECT * FROM Person " + "WHERE (@Nome IS NULL OR Nome LIKE @Nome + '%') " + "ORDER BY [Nome] " +
SELECT * FROM Person " +
"WHERE (@Nome IS NULL OR Nome LIKE @Nome + '%') " +
"ORDER BY [Nome] " +
"OFFSET " + pageSize * (pageNumber - 1) + " ROWS " +
"FETCH NEXT " + pageSize + " ROWS ONLY " +
" " +
"SELECT COUNT(Id) FROM Person " +
"WHERE (@Nome IS NULL OR Nome LIKE @Nome + '%') AND Ativo = 1";
通过将查询更改为pl/sql,如果没有进行搜索,我可以调出所有记录,但在搜索特定名称时,返回的是空的
甲骨文:
SELECT *
FROM (
SELECT ROWNUM rnum, b.*
FROM (
SELECT *
FROM Person
WHERE (:Nome IS NULL OR NOME LIKE ':Nome%')
)b
) WHERE RNUM between :PageSize * (:PageNumber - 1) AND (:PageSize * :PageNumber)";
如何返回一个特定的或空的名称,如果可能的话。。。如何将该搜索的计数与查询一起返回?您应该使用CONCAT:
Nome LIKE :Nome || '%'
-- or
Nome LIKE CONCAT(:Nome, '%')
NOME LIKE':NOME%'的变量名用引号括起来。这就像在SQL Server中使用“@Nome%”。@WilliamRobertson是的,但我正在改用Oracle,这就是我使用:name的原因。嗯,在RDBMS或大多数编程语言中,引用变量名似乎都不起作用。