首页 > 解决方案 > 在oracle sqlplus中选择以'n'结尾的单词

问题描述

选择名字以“n”结尾的教师表的名字和姓氏。

我写:

select first_name, last_name 
from teachers 
where type='teacher' 
and last_name like '%n'; 

不幸的是,它没有选择任何行。它应该至少选择两个。

问题在于“last_name like '%n'”,我找不到解决方案。有谁知道我该如何解决这个问题?截屏

标签: sqldatabaseoraclesqlplus

解决方案


问题是,在您的示例中,没有以 .first_name结尾的列n。是的。

为什么?的列类型first_nameCHAR代替VARCHAR2,因此当每个名字短于 10 个字符时,Oracle 会用空格填充列。

解决方案?

  1. 使用VARCHAR2而不是CHAR

    create table teacher (
      last_name varchar2(10), -- VARCHAR2 now!
      first_name varchar2(10), -- VARCHAR2 now!
      type varchar2(10)
    );
    

    使用这种结构,您的查询将运行良好。

  2. 或者,如果您不想更改表结构,可以TRIM()使用列,如下所示:

    select first_name, last_name 
    from teachers 
    where type='teacher' 
    and trim(first_name) like '%n'; -- use TRIM here!
    

推荐阅读