Sqlserver一次插入多条语句的操作
如何一次将多条数据插入,如何使用数据库的“数组”关键是charindex注意了,少用循环,效率死慢
2010
Ssc
目录
第1章一条SQL语句插入多条数据 (3)
1.1 从数据库中取值法 (3)
1.2 替换法利用Replace和union函数 (3)
第2章SQL charindex的用法 (4)
第3章Sqlserver "数组"使用 (5)
3.1 利用replace (6)
3.2 利用charindex和substring (6)
第4章SQL字符串数组操作 (7)
4.1 一、按指定符号分割字符串返回元素个数 (7)
4.2 二、按指定符号分割字符串返回元素 (8)
4.3 三、结合上边两个函数,象数组一样遍历字符串中的元素 (9)
4.4 四、检查一个元素是否在数组中 (9)
第5章SQLServer(replace函数) (10)
第6章SQL中CAST和CONVERT的区别是什么? (10)
第7章总结-血的教训 (11)
第1章一条SQL语句插入多条数据
1.1从数据库中取值法
从表2中取一些数据插入表1中方法如下
insert into table1 (colum1,colum2) select 'admin', colum2 from table2
在表2中colum1 字段不存在可以用'admin' 替代则插入的记录中colum1 字段值全为'admin'
查前3条记录的SQL语句为
select top 3 * from table1
一次插多条还有一种写法(对新表好用)
select colum1,colum2 into table1 from table2
如果表1 中要插入的字段在表2 中全存在则写法如下
insert into table1(colum1,colum2) select colum1,colum2 from table2 (区别不大)
1.2替换法利用Replace和union函数
insert into news (newsid)
select 'a ' union
select 'b '
declare @str varchar(200)
declare @result varchar(1000)
set @str='aaa,bb,c,d,e,ffffff'
set @result =' insert into news(newsid) select '''+replace(@str,',','''union select''')+''''
exec(@result)
第2章SQL charindex的用法
select * from table_a where charindex('a',id)>0 or charindex('b',id)>0
table_a 表中id字段中含有"a"或者"b"的记录.
---------------------------------------------------
CHARINDEX
返回字符串中指定表达式的起始位置。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在expression2 中搜索expression1 时的起始字符位置。如果没有给定start_location,而是一个负数或零,则将从expression2 的起始位置开始搜索。
返回类型
int
注释
如果expression1 或expression2 之一属于Unicode 数据类型(nvarchar 或nchar)而另一个不属于,则将另一个转换为Unicode 数据类型。
如果expression1 或expression2 之一为NULL 值,则当数据库兼容级别为70 或更大时,CHARINDEX 返回NULL 值。当数据库兼容级别为65 或更小时,CHARINDEX 仅在expression1 和expression2 都为NULL 时返回NULL 值。
如果在expression2 内没有到expression1,则CHARINDEX 返回0。
示例
第一个代码示例返回序列"wonderful"在titles 表的notes 列中开始的位置。第二个示例使用可选的start_location 参数从notes 列的第五个字符开始寻"wonderful"。第三个示例显示了当expression2 内不到expression1 时的结果集。
USE pubs
GO
SELECT CHARINDEX(’wonderful’, notes)
FROM titles
WHERE title_id = ’TC3218’
GO
-- Use the optional start_location parameter to start searching
-- for wonderful starting with the fifth character in the notes
-- column.
USE pubs
GO
SELECT CHARINDEX(’wonderful’, notes, 5)
FROM titles
WHERE title_id = ’TC3218’
GO
下面是第一个查询和第二个查询的结果集:
-----------
46
(1 row(s) affected)
USE pubs
GO
SELECT CHARINDEX(’wondrous’, notes)
FROM titles
WHERE title_id=’TC3218’
GO
下面是结果集。
-----------
sql 字符串转数组(1 row(s) affected)
第3章Sqlserver "数组"使用
在Sqlserver中执行批量操作时,可同时处理多个数据,由于sql不支持数组,可以变相有如下的方法实现:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论