2015-10-16 33 views
-2

我有这个问题一直在困扰我一个小时。为什么LIKE在sql中没有选择行?

表:

-------------------------------------------- 
NAME |      CHAR(10) | 
SURNAME |      CHAR(10) | 
RANK |      VARCHAR2(5)| 
-------------------------------------------- 

我想如果用的姓氏字母'n'结束提取的名字和姓氏。

注:LIKE不使用char(10)工作得很好,所以我转换该列VARCHAR2(10),使用:

ALTER TABLE students 
MODIFY SURNAME VARCHAR2(10); 

我试过这样:

SELECT NAME,SURNAME 
FROM students 
WHERE SURNAME LIKE '%n'; 

不幸的是它给了我:没有选择行。

我想我的列有最后一个字符空格..

不过我不知道我的状态应该是什么样子等。

我什至尝试调用to_char()函数,它给了我相同的输出。

+3

表现出一定的样本数据 –

+0

是什么数据是什么样子?你有没有以字母N结尾的姓氏? – AutomatedOrder

+0

我想知道为什么一个char(10)而不是你的名字varchar 2,但你有没有尝试SURNAME LIKE'%n%'; –

回答

3

您可能在数据中存在空格问题。

试试这个:

SELECT NAME, SURNAME 
FROM students 
WHERE rtrim(SURNAME) LIKE '%n' 
+0

的学生选择姓氏。显然,我确实是。数据仍然没有任何空间。 – Lazai

0

有可能是你提到的这么尝试列一个类型转换。

从学生中选择姓名 其中rtrim(upper(surname))like'%N';

0

试试这个作为一种替代方案:WHERE CHARINDEX( 'N',姓)> 0

+0

charindex在所有数据库系统中都不可用,OP没有指定他的。 –

相关问题