我试图在多个列中执行SELECT要查明姓氏中是否有姓氏连接的名称,是否存在于名称中的名称,名字和姓氏在列中分开。
query = session.createSQLQuery("SELECT * FROM PEOPLE WHERE NAME || ' ' || FIRST_NAME || ' ' || LAST_NAME AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME").setParameter("COMPLETE_NAME","%"+ nameComplete +"%");
这是抛出NullPointerException。
我可以做什么样的事情。
我正在使用Oracle 12c。
答案 0 :(得分:2)
您的NPE很可能与SQL无关,可能您的-- Insert any new records
INSERT INTO [Valid State](Id,Name, IsActive)
SELECT StateId, Name
FROM LinkedServer.database.schema.[Valid State] SRC
WHERE NOT EXISTS (
SELECT * FROM [Valid State] TGT WHERE TGT.ID = SRC.StateID
)
-- Update any existing records
UPDATE TGT
SET Name = SRC.Name
FROM [Valid State] TGT
INNER JOIN
LinkedServer.database.schema.[Valid State] SRC
ON SRC.StateID = TGT.ID
为空。
无论哪种方式,这不是你创建那个查询的方式,如果我理解正确,你想要找到第一个名字+姓氏是否像你给定的参数一样,也许也就是名字列,不完全确定你是不是的意思。
在这种情况下,查询必须类似于:
session
您可以在此处查看CONCAT doc(至少为mysql):https://www.w3schools.com/sql/func_mysql_concat.asp
基本上我们只是在名字和姓氏之间添加一个空格。
上述查询将检查列SELECT * FROM PEOPLE WHERE NAME LIKE :COMPLETE_NAME AND CONCAT(FIRST_NAME, " ", LAST_NAME) AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME
是否为LIKE name
以及complete_name
和first_name
之间的连接是否为LIKE last_name
。