重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle中可以通过全文检索替换来实现单个字符的替换。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了康巴什免费建站欢迎大家使用!
设置全文检索
步骤步骤一:检查和设置数据库角色
首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能 (10G默认安装都有此用户和角色)。你必须修改数据库以安装这项功能。默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys的用户。
步骤二:赋权
在ctxsys用户下,授予测试用户oratext以下权限:
GRANT resource, CONNECT, ctxapp TO oratext;
GRANT EXECUTE ON ctxsys.ctx_cls TO oratext;
GRANT EXECUTE ON ctxsys.ctx_ddl TO oratext;
GRANT EXECUTE ON ctxsys.ctx_doc TO oratext;
GRANT EXECUTE ON ctxsys.ctx_output TO oratext;
GRANT EXECUTE ON ctxsys.ctx_query TO oratext;
GRANT EXECUTE ON ctxsys.ctx_report TO oratext;
GRANT EXECUTE ON ctxsys.ctx_thes TO oratext;
GRANT EXECUTE ON ctxsys.ctx_ulexer TO oratext;
步骤三:设置词法分析器(lexer)
--查询测试
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移动城堡 or 俄罗斯',20)0;
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移动城堡 or 欧洲',20)0;
--基本查询
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移动城堡',20)0;
--查询包含多个词语and测试通过
SELECT score(20),t.* FROM textdemo t WHERE contains(book_abstract,'移动城堡 and 欧洲',20)0;
测试通过。
这个我不太想给你写全了,就给你举个简单的例子吧,可以用case when 语句实现;
SELECT case WHEN t.a ='1' then 'T' else 'F' end as a FROM tablename T;
这个是最简单的方法,我一般都是用procedure实现这个功能,可以用游标或者是直接查询替换。你要是初学者,就直接用上面的sql就能实现!
希望能帮到你。
在正则中需要表示[]字符的地方加上反斜杠转义,\[和\]分别表示字符[和]。
用decode()函数。
具体语句为:select decode(flag,1,'是',0,'否') from table,语句的意思是选择表中的“1”替换为“是”,“0”替换为“否”。
decode函数,是oracle公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。
decode的语法:decode(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,decode函数的结果返回then1,...,如果不等于任何一个if值,则返回else。通过一些函数或计算替代value,可以使decode函数具备大于、小于或等于功能。
如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理。\x0d\x0a\x0d\x0a5个参数\x0d\x0a第一个是输入的字符串\x0d\x0a第二个是正则表达式\x0d\x0a第三个是标识从第几个字符开始正则表达式匹配。(默认为1)\x0d\x0a第四个是标识第几个匹配组。(默认为1)\x0d\x0a第五个是是取值范围:\x0d\x0ai:大小写不敏感;\x0d\x0ac:大小写敏感;\x0d\x0an:点号 . 不匹配换行符号;\x0d\x0am:多行模式;\x0d\x0ax:扩展模式,忽略正则表达式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');
直接用update语句替换即可。
如test表中有如下数据:
现要将sal中的数字都替换成10,用以下语句:
update test set sal=10;
commit;
更新后结果:
注意:执行update语句后,需要进行commit,也就是提交,这样才会使update生效。