换行\n 用了就知道 百试百灵 你regexp_like()
创新互联2013年开创至今,先为晋安等服务建站,晋安等地企业,进行企业商务咨询服务。为晋安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
匹配空格就打空格就行 匹配空白用\s
网上都这么说 你实践有问题 怎么不怀疑自己?
select * from dual where regexp_like('ab c',' ');这样你匹配不了空格?
匹配一个select * from dual where regexp_like('ab c',' +');
REGEXP_COUNT 的语法如下所示:
REGEXP_COUNT ( source_char, pattern [, position [, match_param]])
REGEXP_COUNT 返回pattern 在source_char 串中出现的次数。如果未找到匹配,则函数返回0。position 变量告诉Oracle 在源串的什么位置开始搜索。在开始位置之后每出现一次模式,都会使计数结果增加1。
match_param 变量支持下面几个值:
‘i’ 用于不区分大小写的匹配
‘c’ 用于区分大小写的匹配
‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符
‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。
如果为match_param 指定了多个相互矛盾的值,那么Oracle 使用最后一个值。
可以用REGEXP_COUNT 来修改本章前面的LENGTH 示例。可以将下面的语法
select (LENGTH('GEORGE') - LENGTH(REPLACE('GEORGE', 'GE', NULL)) ) / LENGTH('GE') AS Counter
from DUAL;
COUNTER
-------
2
用如下语法来代替,得到的结果是相同的:
select REGEXP_COUNT('GEORGE','GE',1,'i')
from DUAL;
用REGEXP_COUNT 取代LENGTH 还有一个好处,即可以进行不区分大小写的搜索,因此,前面的查询也可以写成下面这样:
select REGEXP_COUNT('GEORGE','ge',1,'i')
from DUAL;
把TIMEID后面的空格看做字符串的一部分就可以了。“TIMEID
”然后把“TIMEID
”替换为“201205010000
”。
同理,比把“V_PART)”看一个字符串,替换为“PART_20120501)”
那可以不用concat,可以采用||的方式。
比如有A列和B列,要在A列和B列连接的同时在中间加一个空格,可用如下语句:
select A||' '||B from 表名concat在oracle中只可以连接两个字符,如果非要用concat的话,可以采用这种方式:
select concat(concat(A,' '),B) from 表名
第一个问题,VARCHAR2是变长,不会补,但是CHAR会补。所以VARCHAR2的'SDF'跟'SDF
'记录不一样。
第二个问题,你那个where
name
=
'变量值'就搜的是变量值靠左的,对于CHAR类型ORACLE会自动截掉后面的空格,对于VARCHAR2类型不会截。
具体的匹配是什么算法我太知道,不过猜想WHERE的时候CHAR类型是截掉后面的空格,前面的不会截。如果你用CHAR类型,'JOHN'
跟'JOHN
'是一样的记录,本身CHAR会自动用空格填补后面的位置