Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容

这篇具有很好参考价值的文章主要介绍了Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天遇见一个问题需要将字段中包含中文字符串的筛选出来

--建表
CREATE TABLE HADOOP1.AAA
(
ID VARCHAR2(255)
);
--添加字段
 INSERT INTO HADOOP1.AAA(ID)
 VALUES('理解');
 ....
 --查询表内容
 SELECT * FROM HADOOP1.AAA;

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

在网上查找了一下有以下三种方式:

第一种:通过中文字符在length与lengthb的字节长度不同来判断

length计算字符长度,lengthb计算字节长度

select id,length(id),lengthb(id) from HADOOP1.AAA

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

筛选出包含中文的字符串

select id,length(id),lengthb(id) from HADOOP1.AAA where length(id) !=lengthb(id)

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

第二种:通过asciistr的转换性质将中文字符串筛选出来

ASCIISTR函数,参数是一个字符串,如果这个字符在ASCII码表中有,则转成ASCII表中的字符。如果没有,则转成\xxxx格式,xxxx是UTF-16的编码。

下面是ASCII表

    chr(9) tab空格       chr(10) 换行      chr(13) 回车        Chr(13)&chr(10) 回车换行       chr(32) 空格符       chr(34) 双引号       chr(39) 单引号
    chr(33) !        chr(34) "        chr(35) #        chr(36) $        chr(37) %        chr(38) &        chr(39) '        chr(40) (        chr(41) )        chr(42) *
    chr(43) +        chr(44) ,        chr(45) -        chr(46) .        chr(47) /
    Chr(48) 0        Chr(49) 1        Chr(50) 2        Chr(51) 3        Chr(52) 4        Chr(53) 5        Chr(54) 6        Chr(55) 7        Chr(56) 8        Chr(57) 9
    chr(58)            chr(59) ;        chr(60) <        chr(61) =        chr(62) >        chr(63) ?        chr(64) @
    chr(65) A        chr(66) B        chr(67) C        chr(68) D        chr(69) E        chr(70) F        chr(71) G        chr(72) H         chr(73) I          chr(74) J
    chr(75) K        chr(76) L        chr(77) M        chr(78) N        chr(79) O        chr(80) P        chr(81) Q        chr(82) R        chr(83) S        chr(84) T
    chr(85) U        chr(86) V        chr(87) W        chr(88) X        chr(89) Y        chr(90) Z
    chr(91) [        chr(92) \        chr(93) ]        chr(94) ^        chr(95) _        chr(96) `
    chr(97) a        chr(98) b        chr(99) c        chr(100) d        chr(101) e       chr(102) f       chr(103) g       chr(104) h        chr(105) i
    chr(106) j        chr(107) k       chr(108) l        chr(109) m       chr(110) n       chr(111) o       chr(112) p        chr(113) q       chr(114) r
    chr(115) s       chr(116) t        chr(117) u       chr(118) v       chr(119) w       chr(120) x        chr(121) y       chr(122) z
    chr(123) {       chr(124) |       chr(125) }       chr(126) ~        chr(127)          chr(128)         chr(153)chr(169) ©          chr(174) ®


Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

如果表中只有中文和英文、数字等字符,则可以用\来判断是否带有中文。
使用asciistr函数得出是否字段里面包含“/”,因为当中文字符转换为ascii后,变成“/FFFD/FFFD”,但是需要注意一个特殊字符“/”,当它出现的时候转换后的码为“/005C”

代码运行:

select id,asciistr(id) from HADOOP1.AAA 

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

运用:

select * from HADOOP1.AAA  where  REPLACE(asciistr(id),'\005C','') like '%\%'

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

注释:在上面图结果中可以看出包含中文的字符串通过asciistr,转换成包含“\”的字符串,但是这个数据方法有个弊端,原始字符串中不能包含“\”。故我这里用了REPLACE将“\”替换了一下,
同时这个方法不止能筛查中文,还能筛选日文,如果有其他语言就不可以用这种方法

第三种:通过CONVERT 根据类型来进行筛选

CONVERT 函数是 SQL 中的一种类型转换函数,它用于将一个数据类型转换为另一个数据类型。
CONVERT(inputstring,dest_charset,source_charset) inputstring:
要转换的字符串
dest_charset:目标字符集
source_charset:原字符集

select id,CONVERT(id,'ZHS16GBK','utf8') from HADOOP1.AAA where id <> CONVERT(id,'ZHS16GBK','utf8')

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

通过上面的可以将包含中文的字符串找出来,那如何能删除里面的中文呢

如要删除字符串中的中文可以用到正则表达式
regexp_replace(tel, ‘[^\x00-\xff]’, ‘’)

select id,regexp_replace(id, '[^\x00-\xff]', '') from HADOOP1.AAA

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库

–只保留中文及小写字母

select id,regexp_replace(id, '[\u4e00-\u9fa5]', '') from HADOOP1.AAA

Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容,oracle,数据库
注释:这种表达需要注意字符串中如果包含小写字母,及不在这个范围内容同样可以删除,oracle正则表达式regexp_substr、regexp_like、regexp_replace是无法像其他正则表达式一样用[\u4e00-\u9fa5]来匹配中文的。文章来源地址https://www.toymoban.com/news/detail-658606.html

到了这里,关于Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Lua判断字符串包含另一个字符串

    1. string.find(\\\"原字符串\\\",\\\"目标字符串\\\")  返回这个子串的起始索引和结束索引,否则就会返回 nil 2. string.match(\\\"原字符串\\\",\\\"目标字符串\\\")

    2024年02月17日
    浏览(73)
  • Java判断一个字符串是否包含某个字符串

    开发过程中,有时会判断一个字符串是否包含某个字符串的操作,这里总结判断方法。 方式一:contains()方法         理解:contains() 方法用于判断字符串中是否包含指定的字符或字符串。(判断一个字符串是否包含某个字符串)         语法:public boolean contains(CharSequence

    2024年02月13日
    浏览(96)
  • Python中判断字符串是否包含另一个字符串

    Python中判断字符串是否包含另一个字符串 在Python编程中,经常需要判断一个字符串是否包含另一个字符串。这在处理文本数据或搜索操作时非常常见。Python提供了几种方法来实现这个功能,本文将介绍其中的几种方法,并提供相应的源代码示例。 方法一:使用in 最简

    2024年02月07日
    浏览(63)
  • Java判断一个字符串是否包含某个字符

    1 问题 如何利用Java通过不同的方法来判断一个字符串是否包含某个字符。 2 方法 .contains方法 这个是利用java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列,此方法返回true,如果此字符串包含,否则返回false。 (2).indexOf方法 这一个是利用java.lang.Str

    2024年02月16日
    浏览(97)
  • Python中判断字符串包含的方法

    在Python编程语言中,我们经常需要判断一个字符串是否包含另一个字符串。幸运的是,Python提供了多种方法来完成这个任务。下面我们将介绍几种常用的方法。 方法一:使用in Python中的in可以用来判断一个字符串是否包含另一个字符串。具体用法如下:

    2024年02月05日
    浏览(48)
  • C++ string判断是否包含子字符串

    C++的string类提供了字符串中查找另一个字符串的函数find。 其重载形式为: 功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回 string::npos 。

    2024年02月02日
    浏览(52)
  • c# 判断一个字符串列表是否包含另一个字符串列表中某一个元素

    当需要判断一个字符串列表是否包含另一个字符串列表中的某个元素时,可以使用 LINQ 查询来完成。下面是一个示例方法: 在上面的示例中,我们有两个字符串列表 list1 和 list2。我们想要判断 list1 是否包含了 list2 中的某个元素。 我们定义了 ListContainsElement 方法,该方法接

    2024年02月12日
    浏览(83)
  • java判断字符串是否包含英文,以及英文个数

    在Java中,可以使用正则表达式或字符遍历的方式来判断字符串是否包含英文字符,并统计英文字符的个数。 使用正则表达式判断字符串是否包含英文字符: 这里的正则表达式 “.[a-zA-Z]+.” 表示匹配包含至少一个英文字符的字符串。containsEnglish 的值为 true 表示字符串包含英

    2024年02月13日
    浏览(88)
  • JS中判断某个字符串、数组等是否包含某个值

    方法一: indexOf()   (推荐)   indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。 方法二:match()   match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 方法三: search()   search() 方法

    2024年02月03日
    浏览(112)
  • mysql判断查询条件是否包含某字符串的7种方式

    like 也就是模糊查询 如:select * from user where user_name \\\'%李%\\\' locate 判断是否包含某字符串 如:select * from user where locate(\\\'李\\\',user_name)0 position 判断是否包含某字符串 如:select * from user where position(\\\'李\\\' in user_name)0 instr 判断是否包含某字符串 如:select * from user where instr(user_name,\\\'李\\\'

    2024年02月16日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包