sql - 在oracle sqlplus中选择以'n'结尾的单词
问题描述
选择名字以“n”结尾的教师表的名字和姓氏。
我写:
select first_name, last_name
from teachers
where type='teacher'
and last_name like '%n';
不幸的是,它没有选择任何行。它应该至少选择两个。
问题在于“last_name like '%n'”,我找不到解决方案。有谁知道我该如何解决这个问题?截屏
解决方案
问题是,在您的示例中,没有以 .first_name
结尾的列n
。是的。
为什么?的列类型first_name
是CHAR
代替VARCHAR2
,因此当每个名字短于 10 个字符时,Oracle 会用空格填充列。
解决方案?
使用
VARCHAR2
而不是CHAR
:create table teacher ( last_name varchar2(10), -- VARCHAR2 now! first_name varchar2(10), -- VARCHAR2 now! type varchar2(10) );
使用这种结构,您的查询将运行良好。
或者,如果您不想更改表结构,可以
TRIM()
使用列,如下所示:select first_name, last_name from teachers where type='teacher' and trim(first_name) like '%n'; -- use TRIM here!
推荐阅读
- barcode - Zbar Code128 解码错误
- zapier - zapier 以编程方式设置捆绑包输入数据
- kubernetes - Pod 无法通过服务 IP 连接到自身(kubernetes v1.10)
- java - 由 java.lang.IllegalArgumentException 引起:MediaButtonReceiver 组件可能不为空
- r - R中的条件交叉表
- gradle - gradle - configure() 方法有什么作用
- django - 发布请求在 ListView 内的 get_queryset 函数内不可用
- dart - 在按钮单击时更新颤动中的文本字段
- java - java ClassLoader中为什么没有unloadClass(String name)方法
- c# - 指示状态的 WPF 自定义按钮