重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
补空查询和补零查询是两个不同概念。
十年的北湖网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整北湖建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“北湖网站设计”,“北湖网站推广”以来,每个客户项目都认真落实执行。
补空查询是将空格替换成特定字符,可用replace函数。
如test表中有如下数据:
现在要将str字段内的空格替换成s,可用如下语句:
select replace(str,' ','s') from test;
结果:
补零查询分为两类,一类是左补0,一类是右补0。左补0用lpad,右补零用rpad。
test表中数据如下:
现在要求将str字段左补0,将其长度保持在10位。可用以下语句:
select lpad(str,10,'0') from test;
结果:
现在要将str字段右补0,将其长度保持在10位。可用以下语句:
select rpad(str,10,'0') from test;
结果:
第一个问题,VARCHAR2是变长,不会补,但是CHAR会补。所以VARCHAR2的'SDF'跟'SDF
'记录不一样。
第二个问题,你那个where
name
=
'变量值'就搜的是变量值靠左的,对于CHAR类型ORACLE会自动截掉后面的空格,对于VARCHAR2类型不会截。
具体的匹配是什么算法我太知道,不过猜想WHERE的时候CHAR类型是截掉后面的空格,前面的不会截。如果你用CHAR类型,'JOHN'
跟'JOHN
'是一样的记录,本身CHAR会自动用空格填补后面的位置
字符分好几种,
char型是定长,假如长度是20,你里边的内容如果是000,那么系统将给这个000补充17位的空格
varchar2是不定长,就是假如长度是20,那么最大不能超过20,如果是000,你取下length,它就是3
trim是左右都去空格,rtrim是右去空格,还有个ltrim是左去空格,这里觉得你还是用trim函数比较好
-----------补充----------
那就有可能不是空格,有可能是换行符或者其他好像空格的符号
-----------补充2----------
update 表名 set 字段名=replace(字段名,chr(10),char(13));
先用上边的把换行符转成空格
如果表中主键为一列,假设列明为 a
select * from table_name where a like '% %';
如果表中主键是多列组成的联合主键,假设列明为 a,b,c
select * from table_name where a like '% %' or b like '% %' or c like '% %';
另外,这个条件中不建议使用函数,因为条件项为主键,如果使用函数,有些情况是不会走索引的,会影响效率。
以上,仅供参考。