sql 如何批量替换邮箱后缀

sql 如何批量替换邮箱后缀,第1张

以表格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)   --返回:abc

2、charindex 函数

语法格式:charindex ( expression1 , expression2 [ , start_location ] )

expression1:是在expression2中寻找的字符

start_location:是charindex函数开始在expression2中找expression1的位置

charindex函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如charindex没有找到要找的字符串,那么函数整数0。

例:

charindex(sql, microsoft sql server) --返回:11

charindex(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()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11759038.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存