mysql 中用正则表达式如何取一个字符串中指定的字段,

mysql 中用正则表达式如何取一个字符串中指定的字段,,第1张

substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串

举例:

'Provider="RiskManagement" finalScore="65" RGID="100397278"'     //获取finalScore的值

1、获取finalScore右边的字符

select substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1)

2、再获取" RGID="左边的字符

select substring_index(substring_index('Provider="RiskManagement" finalScore="65" RGID="100397278"','finalScore="',-1),'" RGID="',1)

扩展资料

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

1、字符串截取:left(str, length)

mysql>select left('sqlstudy.com', 3)

| left('sqlstudy.com', 3) |

| sql |

2、字符串截取:right(str, length)

mysql>select right('sqlstudy.com', 3)

| right('sqlstudy.com', 3) |

| com |

1、临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表:

1)定义字段

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

)

2)直接将查询结果导入临时表

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name

2、另外mysql也允许你在内存中直接创建临时表,因为是在内存中所有速度会很快,语法如下:

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

) TYPE = HEAP

3、从上面的分析可以看出临时表的数据是会被清空的,你断开了连接就会被自动清空,但是你程序中不可能每发行一次sql就连接一次数据库吧(如果是这样的话,那就会出现你担心的问题,如果不是就没有问题),因为只有断开数据库连接才会被清空数据,在一个数据库连接里面发行多次sql的话系统是不会自动清空临时表数据的。

---

以上,希望对你有所帮助。

先看一下最简单的例子,在test中,添加一个字段,字段名为birth,类型为date类型。

mysql>

alter

table

test

add

column

birth

date

Query

OK,

0

rows

affected

(0.36

sec)

Records:

0

Duplicates:

0

Warnings:

0

查询一下数据,看看结果:

mysql>

select

*

from

test

+------+--------+----------------------------------+------------+-------+

|

t_id

|

t_name

|

t_password

|

t_birth

|

birth

|

+------+--------+----------------------------------+------------+-------+

|

1

|

name1

|

12345678901234567890123456789012

|

NULL

|

NULL

|

|

2

|

name2

|

12345678901234567890123456789012

|

2013-01-01

|

NULL

|

+------+--------+----------------------------------+------------+-------+

2

rows

in

set

(0.00

sec)

从上面结果可以看出,插入的birth字段,默认值为空。我们再来试一下,添加一个birth1字段,设置它不允许为空。

mysql>

alter

table

test

add

column

birth1

date

not

null

Query

OK,

0

rows

affected

(0.16

sec)

Records:

0

Duplicates:

0

Warnings:

0

居然执行成功了!?意外了!我原来以为,这个语句不会成功的,因为我没有给他指定一个默认值。我们来看看数据:

mysql>

select

*

from

test

+------+--------+----------------------------------+------------+-------+------------+

|

t_id

|

t_name

|

t_password

|

t_birth

|

birth

|

birth1

|

+------+--------+----------------------------------+------------+-------+------------+

|

1

|

name1

|

12345678901234567890123456789012

|

NULL

|

NULL

|

0000-00-00

|

|

2

|

name2

|

12345678901234567890123456789012

|

2013-01-01

|

NULL

|

0000-00-00

|

+------+--------+----------------------------------+------------+-------+------------+

2

rows

in

set

(0.00

sec)

哦,明白了,系统自动将date类型的值,设置了一个默认值:0000-00-00。下面我来直接指定一个默认值看看:

mysql>

alter

table

test

add

column

birth2

date

default

'2013-1-1'

Query

OK,

0

rows

affected

(0.28

sec)

Records:

0

Duplicates:

0

Warnings:

0

mysql>

select

*

from

test

+------+--------+----------------------------------+------------+-------+------------+------------+

|

t_id

|

t_name

|

t_password

|

t_birth

|

birth

|

birth1

|

birth2

|

+------+--------+----------------------------------+------------+-------+------------+------------+

|

1

|

name1

|

12345678901234567890123456789012

|

NULL

|

NULL

|

0000-00-00

|

2013-01-01

|

|

2

|

name2

|

12345678901234567890123456789012

|

2013-01-01

|

NULL

|

0000-00-00

|

2013-01-01

|

+------+--------+----------------------------------+------------+-------+------------+------------+

2

rows

in

set

(0.00

sec)

看到没,将增加的birth2字段,就有一个默认值了,而且这个默认值是我们手工指定的。

关于MySQL中给表添加一个字段,本文就介绍这么多,希望对大家有所帮助,谢谢!


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

原文地址: http://outofmemory.cn/zaji/8627147.html

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

发表评论

登录后才能评论

评论列表(0条)

保存