当我的查询是:
select * from table_name where name='jim'
一切都很好。
但是当我的查询是:
select * from table where ='a statement with 2 and more word'
例如此查询:
select columns from table where ='jim carrey'
查询只考虑了jim'。换句话说,查询只考虑第一个单词而不考虑之后的任何内容。
答案 0 :(得分:1)
SQL不能那样工作。如果您采取以下三个查询:
public static String largestPalindromeInString(String in) {
int right = in.length() - 1;
int left = 0;
char[] word = in.toCharArray();
while (right > left && word[right] != word[left]) {
right--;
}
int lenght = right + 1;
while (right > left && word[right] == word[left]) {
left++;
right--;
}
if (0 >= right - left) {
return new String(Arrays.copyOf(word, lenght ));
} else {
return largestPalindromeInString(
new String(Arrays.copyOf(word, in.length() - 1)));
}
}
如果我在我的SQL服务器数据库上运行这些(在更改回我们的真实数据结构之后),我将得到1个响应,第一个,实际命名为“Frank Jones”的人。我不会得到'Frank Jones III “
由于如果我运行第二个查询,名字和列号都在名称列中,我将得不到任何结果。
如果我运行第三个查询,我会得到每个人的名字,如果弗兰克但不会得到“杰森弗兰克斯”,因为我在我搜索的短语末尾只有一个通配符。如果我想要每个人都有弗兰克在他们名下的部分我会写这个查询:
select * from users where name = 'Frank Jones'
select * from users where name = 'Frank'
select * from users where name like 'Frank%'
这些是关于各种where子句的含义的标准规则,适用于我见过的每个数据库(尽管有些可能有不同的通配符)。
答案 1 :(得分:0)
你不会说你正在使用什么平台,这使得回答你的问题变得更难,但我会给出一个接近的答案。
您需要解析字符串中的第一个工作。所以
SELECT aColumn
FROM aTable
WHERE name = LEFT('Jim Carrey', CHARINDEX('Jim Carrey',' '))
将是sql server
中的一个示例每个平台的名称都会发生变化。