字符串格式如下:
初始103034Z2001
业务编号75037000374采购我想将两端的汉字去掉,想要得到的结果如下:
103034Z2001
75037000374
初始103034Z2001
业务编号75037000374采购我想将两端的汉字去掉,想要得到的结果如下:
103034Z2001
75037000374
解决方案 »
- Oracle Database Vault
- oracle表更新问题
- 如何将XML转化为几个表的形式,存储到Oracle中
- oracle9.0.2 江湖告急!!!!!在线等!200分
- 在NoArchivelog模式,我建立一test表里面填写10行数据,接着全备数据库,然后把这10行数据删除,恢复数据库,应该test表有10行数据,可是没有数
- 菜鸟紧急求助!pl/sql下怎么执行包里面的过程?
- 修改启动参数导致数据库不可用
- 关于sequence值的疑惑?
- 我在Oracle 8i中插入数据时,为什么有的时候数据纪录没有在最后插入?(100分!)
- 请问多线程delete 删除同一条数据,死锁怎么解决
- 用proc预编译后的.c文件在vs2005下link出错。
- Oracle Forms 代码下载,PL/SQL 代码下载,公司内部研修的时候写的。
固定直接用SUBSTR
不固定的话,要写个函数去做了
FROM DUAL;已解决.方法如上
'1234567890ABCDEFGHIJGLMNOPQRSTUVWXYZ' || '初始103034Z2001',
'1234567890ABCDEFGHIJGLMNOPQRSTUVWXYZ') AS A
FROM DUAL;
这个好像不行!
[^\u4e00-\u9fa5]+
这个就是能够过滤掉汉字的正则表达式
string strRegexRule = "[^\u4e00-\u9fa5]+";//正则表达式
string strValue = "业务编号75037000374采购";//被测字符串
Regex rg = new Regex(strRegexRule);
if (rg.Matches(strValue).Count > 0)
{
MatchCollection mc = rg.Matches(strValue);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
}需要:
using System.Text.RegularExpressions;
select regexp_substr('汉字aaaaaa','[:alpha:]+') from dual
如果是10G可以
select regexp_substr('汉字aaaaaa','[^\u4e00-\u9fa5]+') from dual
没想到居然字符集的问题居然不能用[:alpha:]过滤。
还是上面的说得对!
------------
汉字
SQL> select regexp_substr('汉b字aaaaaa','[^\u4e00-\u9fa5]+') from dual;REGEXP_SUBSTR(
--------------
汉b字真有意思
--------------
汉c字SQL> select regexp_substr('汉aa字aaaaaa','[^\u4e00-\u9fa5]+') from dual;REGEXP
------
汉
在sql server 中怎么运行不起来,不懂,麻烦楼下赐教。
------------
aaaaaa
SQL> select regexp_substr('汉gg字aaaaaa','[:alpha:]+') from dual;REGEXP_SUBST
------------
aaaaaa
SQL> select regexp_substr('汉aaa字aaaaaa','[:alpha:]+') from dual;REGEXP
------
aaaSQL> select regexp_substr('初始103034Z2001','[:alpha:]+') from dual;R
-这....这....
你查下汉字在utf8中编码所在的范围,写个函数做遍历,把这个范围的字符去掉就行了你在数据库里做还得考虑别的问题
'1' || translate('abc13132xyz', 'a1234567890', 'a'),
'1')
from dual
SQL> Select REGEXP_REPLACE('abc123456中国','[[:alpha:]]','') AS RX_REPLACE FROM dual;RX_REPLACE
----------
123456SQL>
select length('a'),lengthb('a'),length('啊') ,lengthb('啊') from dual
---------------------------------
LENGTH('A') LENGTHB('A') LENGTH('啊') LENGTHB('啊')
1 1 1 2依次循环字符串的每个值,如果length () <> lengthb() 那就是汉字
直接跳过,循环下一个字符。
SELECT TRANSLATE('业务编号7503700Z0374采购',
'1234567890ABCDEFGHIJGLMNOPQRSTUVWXYZabcdefghijglmnopqrstuvwxyz' || '业务编号7503700Z0374采购',
'1234567890ABCDEFGHIJGLMNOPQRSTUVWXYZabcdefghijglmnopqrstuvwxyz') AS A
FROM DUAL;正则[^\u4e00-\u9fa5]并不能完全比配汉字,有时候把字母都过滤了,比如s就会被过滤
你网上搜搜TRANSLATE的含义就明白了