我是一个完全的初学者,所以如果我以一种难以理解的方式写这篇文章,我会提前道歉。
我已经设置了一个数据库,并且我正在使用用户界面,因此用户可以获取某些数据。用户需要能够通过名字和姓氏进行搜索,以返回被搜索的人的所有信息。这是我在下面使用的代码。当我运行程序并输入' joe bloggs'我弹出的一个例外是“对不起找不到匹配”#39;我确信joe bloggs在数据库中,因此没有问题。
我是否需要考虑用户输入的名字和姓氏之间的空格?
SELECT * FROM TABLE
WHERE UPPER(FirstName) LIKE UPPER(?) AND UPPER(Surname) LIKE (?);
答案 0 :(得分:0)
如果你把joe bloggs
放在两者中,当然它不会起作用,因为'joe'不像'joe bloggs'。
您需要拆分字符串,或者更好,为用户提供2个输入。
如果您只想要完全匹配,请使用=
运算符,而不是。
如果要查找包含用户输入的名称,请添加“%”:
WHERE UPPER(FirstName) LIKE UPPER('%'+userInput+'%)
答案 1 :(得分:0)
我假设用户输入的名称只是一个变量(某个形状或形式,在?
引用的问题中),您想要绑定到数据库中的名称。
如果这个假设是正确的,你可以这样做:
SELECT * FROM TABLE
WHERE CONCAT(CONCAT(UPPER(FirstName), ' '), UPPER(Surname)) LIKE (?);
这假设用户只在名称中输入了一个空格。拼写错误很容易,因此与给定名称中任何和所有空格的replace
进行比较可能会更好。
正如其他人所说,您可以将LIKE
替换为=
。像名字这样的东西,你通常想要完全匹配。