zoukankan      html  css  js  c++  java
  • SQL中的替换函数replace()使用

    语法
    REPLACE ( string_expression , string_pattern , string_replacement )

    参数
    string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。
    string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 ('')。
    string_replacement 替换字符串。string_replacement 可以是字符或二进制数据类型。

    返回类型
    如果其中的一个输入参数数据类型为 nvarchar,则返回 nvarchar;否则 REPLACE 返回 varchar。
    如果任何一个参数为 NULL,则返回 NULL。

    上面都是官话,不好懂!翻成白话:REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。

    一、准备实验环境

    1.1 创建表:
    CREATE TABLE `test_tb` (                                                 
    `id` int(10) unsigned NOT NULL auto_increment COMMENT '主键自增',  
    `name` char(30) default NULL COMMENT '姓名',                         
    `address` char(60) default NULL COMMENT '地址',                      
    `country` char(200) default NULL COMMENT '国家',                     
    PRIMARY KEY  (`id`)                                                    
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='测试表'  

    1.2 插入数据:
    insert into test_tb(name,address,country) values
    ('zhangsan','北京 朝阳区','中国'),
    ('lisi','上海 浦东区','中国'),
    ('wangwu','郑州金水区','中国'),
    ('zhaoliu','香港九龙','中国香港'),
    ('Q7','加州牛肉','美国'),
    ('wangba','新九州岛','日本')



    二、查询替换

    2.1 将address字段里的 “区” 替换为 “呕” 显示,如下

    select *,replace(address,'区','呕') AS rep
    from test_tb



    2.2 将address字段里的 “九” 替换为 “十” 显示,如下

    select *,replace(address,'九','十') AS rep
    from test_tb
    where id in (4,6)

    总结:联想到前面有讲过 使用IF(expr1,expr2,expr3) 及 CASE...WHEN...THEN...END 可以实现查询结果的别名显示,
            但区别是:这两者是将查询结果值做整体的别名显示,而replace则可以对查询结果的局部字符串做替换显示(输出)。


    三、更新替换

    3.1 将address字段里的 “东” 替换为 “西” ,如下
    update test_tb set address=replace(address,'东','西') where id=2

    总结:对字段中局部字符串做更新替换。

    四、插入替换

    4.1 将id=6的name字段值改为wokou
    replace into test_tb VALUES(6,'wokou','新九州岛','日本')

    总结:向表中“替换插入”一条数据,如果原表中没有id=6这条数据就作为新数据插入(相当于insert into作用);如果原表中有id=6这条数据就做替换(相当于update作用)。对于没有指定的字段以默认值插入。

  • 相关阅读:
    解决ListView异步加载数据之后不能点击的问题
    android点击实现图片放大缩小 java技术博客
    关于 数据文件自增长 的一点理解
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Linux 超级用户的权利
    RAC 实例 迁移到 单实例 使用导出导入
    Shell 基本语法
    Linux 开机引导与关机过程
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Oracle RAC + Data Guard 环境搭建
  • 原文地址:https://www.cnblogs.com/martinzhang/p/3301224.html
Copyright © 2011-2022 走看看