
以表格a,字段g(邮箱地址)为例:
sql 批量替换邮箱后缀,有两种方式:
一、将所有地址后缀批量替换为test.com
update a set g = left(g,charindex('@', g))+'text.com'替换结果:
语句使用了left(),charindex()两个函数。
1、left函数
语法格式:LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。
例:
select left('abcdef',3) --返回:abc2、charindex 函数
语法格式:charindex ( expression1 , expression2 [ , start_location ] )
expression1:是在expression2中寻找的字符
start_location:是charindex函数开始在expression2中找expression1的位置
charindex函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如charindex没有找到要找的字符串,那么函数整数0。
例:
charindex(sql, microsoft sql server) --返回:11charindex(7.0, microsoft sql server 2000) --返回:0
二、将后缀为'163.com'批量替换为test.com
update a set g = REPLACE(g,'163.com','text.com')替换结果:
语句使用了REPLACE函数。
1、语法格式:REPLACE ( ''string_replace1'' , ''string_replace2'' , ''string_replace3'' )
string_replace1:待搜索的字符串表达式。string_replace1 可以是字符数据或二进制数据。
string_replace2:待查找的字符串表达式。string_replace2 可以是字符数据或二进制数据。
string_replace3:替换用的字符串表达式。string_replace3 可以是字符数据或二进制数据。
返回类型:
如果 string_replace(1、2 或 3)是支持的字符数据类型之一,则返回字符数据。如果 string_replace(1、2 或 3)是支持的 binary 数据类型之一,则返回二进制数据。
例:
SELECT REPLACE(''abcdefghicde'',''cde'',''xxx'') --返回:“abxxxfghixxx”1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。
2、先挑ID为1的数据进行截取查询演示。
3、如果已知截取字符的长度和特殊字符位置,就可以用substring()函数来从字符串的开始位置,截取到特殊字符出现的位置。
4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句。
5、使用LEFT()函数和charindex()函数来从字符最左边开始到特殊字符出现的位置。
6、第一个参数表示被截取的字符串,第二个参数表示要在第一个参数中开始截取的位置,第三个参数表示要截取的长度。
dateadd函数不是SQL才有么???楼主是不是弄错了?在oracle中有很多关于日期的函数,如:
1、add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL>select add_months(sysdate,12) "Next Year" from dual
Next Year
----------
13-11月-04
SQL>select add_months(sysdate,112) "Last Year" from dual
Last Year
----------
13-3月 -13
SQL>
2、current_date()返回当前会放时区中的当前日期
date_value:=current_date
SQL>column sessiontimezone for a15
SQL>select sessiontimezone,current_date from dual
SESSIONTIMEZONE CURRENT_DA
--------------- ----------
+08:00 13-11月-03
SQL>alter session set time_zone='-11:00'
2 /
会话已更改。
SQL>select sessiontimezone,current_timestamp from dual
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.59.13.668000 下午 -11:
00
SQL>
3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL>column sessiontimezone for a15
SQL>column current_timestamp format a36
SQL>select sessiontimezone,current_timestamp from dual
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
+08:00 13-11月-03 11.56.28.160000 上午 +08:
00
SQL>alter session set time_zone='-11:00'
2 /
会话已更改。
SQL>select sessiontimezone,current_timestamp from dual
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.58.00.243000 下午 -11:
00
SQL>
4、dbtimezone()返回时区
varchar_value:=dbtimezone
SQL>select dbtimezone from dual
DBTIME
------
-07:00
SQL>
5、extract()找出日期或间隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL>select extract(month from sysdate) "This Month" from dual
This Month
----------
11
SQL>select extract(year from add_months(sysdate,36)) "3 Years Out" from dual
3 Years Out
-----------
2006
SQL>
6、last_day()返回包含了日期参数的月份的最后一天的日期
date_value:=last_day(date_value)
SQL>select last_day(date'2000-02-01') "Leap Yr?" from dual
Leap Yr?
----------
29-2月 -00
SQL>select last_day(sysdate) "Last day of this month" from dual
Last day o
----------
30-11月-03
SQL>
7、localtimestamp()返回会话中的日期和时间
timestamp_value:=localtimestamp
SQL>column localtimestamp format a28
SQL>select localtimestamp from dual
LOCALTIMESTAMP
----------------------------
13-11月-03 12.09.15.433000
下午
SQL>select localtimestamp,current_timestamp from dual
LOCALTIMESTAMP CURRENT_TIMESTAMP
---------------------------- ------------------------------------
13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08:
下午 00
SQL>alter session set time_zone='-11:00'
会话已更改。
SQL>select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual
LOCALTIMESTAMP SYSDATE
---------------------------- ------------------------
12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午
下午
SQL>
8、months_between()判断两个日期之间的月份数量
number_value:=months_between(date_value,date_value)
SQL>select months_between(sysdate,date'1971-05-18') from dual
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL>select months_between(sysdate,date'2001-01-01') from dual
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)