1-- ======================================================
2
3--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
4
5--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
6
7-- ======================================================
8
9Select
10
11 (Case When A.Colorder=1 Then D.Name Else '' End)表名,
12
13 A.Colorder 字段序号,
14
15 A.Name 字段名,
16
17 (Case When Columnproperty( A.Id,A.Name,'Isidentity')=1 Then '√'Else '' End) 标识,
18
19 (Case When (Select Count(*)
20
21 From Sysobjects
22
23 Where (Name In
24
25 (Select Name
26
27 From Sysindexes
28
29 Where (Id = A.Id) And (Indid In
30
31 (Select Indid
32
33 From Sysindexkeys
34
35 Where (Id = A.Id) And (Colid In
36
37 (Select Colid
38
39 From Syscolumns
40
41 Where (Id = A.Id) And (Name = A.Name))))))) And
42
43 (Xtype = 'Pk'))>0 Then '√' Else '' End) 主键,
44
45 B.Name 类型,
46
47 A.Length 占用字节数,
48
49 Columnproperty(A.Id,A.Name,'Precision') As 长度,
50
51 Isnull(Columnproperty(A.Id,A.Name,'Scale'),0) As 小数位数,
52
53 (Case When A.Isnullable=1 Then '√'Else '' End) 允许空,
54
55 Isnull(E.Text,'') 默认值,
56
57 Isnull(G.[Value],'') As 字段说明
58
59From Syscolumns A Left Join Systypes B
60
61On A.Xtype=B.Xusertype
62
63Inner Join Sysobjects D
64
65On A.Id=D.Id And D.Xtype='U' And D.Name<>'Dtproperties'
66
67Left Join Syscomments E
68
69On A.Cdefault=E.Id
70
71Left Join Sysproperties G
72
73On A.Id=G.Id And A.Colid = G.Smallid
74
75Order By A.Id,A.Colorder
76
77列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息
78
79并导出到Excel 中
80
81-- ======================================================
82
83-- Export all user tables definition and one sample value
84
85-- jan-13-2003,Dr.Zhang
86
87-- ======================================================
88
89在查询分析器里运行:
90
91SET ANSI_NULLS OFF
92
93GO
94
95SET NOCOUNT ON
96
97GO
98
99
100
101SET LANGUAGE 'Simplified Chinese'
102
103go
104
105DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)
106
107
108
109SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t
110
111FROM syscolumns a, systypes b,sysobjects d
112
113WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U'
114
115
116
117DECLARE read_cursor CURSOR
118
119FOR SELECT TableName,FieldName FROM #t
120
121
122
123SELECT TOP 1 '_TableName ' TableName,
124
125 'FieldName ' FieldName,'TypeName ' TypeName,
126
127 'Length' Length,'IS_NULL' IS_NULL,
128
129 'MaxLenUsed' AS MaxLenUsed,'Sample Value ' Sample,
130
131 'Comment ' Comment INTO #tc FROM #t
132
133
134
135OPEN read_cursor
136
137
138
139FETCH NEXT FROM read_cursor INTO @tbl,@fld
140
141WHILE (@@fetch_status <> -1) --- failes
142
143BEGIN
144
145 IF (@@fetch_status <> -2) -- Missing
146
147 BEGIN
148
149 SET @sql=N'SET @maxlen=(SELECT max(len(cast('+@fld+' as nvarchar))) FROM '+@tbl+')'
150
151 --PRINT @sql
152
153 EXEC SP_EXECUTESQL @sql,N'@maxlen int OUTPUT',@maxlen OUTPUT
154
155 --print @maxlen
156
157 SET @sql=N'SET @sample=(SELECT TOP 1 cast('+@fld+' as nvarchar) FROM '+@tbl+' WHERE len(cast('+@fld+' as nvarchar))='+convert(nvarchar(5),@maxlen)+')'
158
159 EXEC SP_EXECUTESQL @sql,N'@sample varchar(30) OUTPUT',@sample OUTPUT
160
161 --for quickly
162
163 --SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+
164
165 --@tbl+' order by 1 desc ))'
166
167 PRINT @sql
168
169 print @sample
170
171 print @tbl
172
173 EXEC SP_EXECUTESQL @sql,N'@sample nvarchar(30) OUTPUT',@sample OUTPUT
174
175 INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,
176
177 convert(nchar(20),ltrim(ISNULL(@sample,' '))) as Sample,' ' Comment FROM #t where TableName=@tbl and FieldName=@fld
178
179 END
180
181 FETCH NEXT FROM read_cursor INTO @tbl,@fld
182
183END
184
185
186
187CLOSE read_cursor
188
189DEALLOCATE read_cursor
190
191GO
192
193
194
195SET ANSI_NULLS ON
196
197GO
198
199SET NOCOUNT OFF
200
201GO
202
203select count(*) from #t
204
205DROP TABLE #t
206
207GO
208
209
210
211select count(*)-1 from #tc
212
213
214
215select * into ##tx from #tc order by tablename
216
217DROP TABLE #tc
218
219
220
221--select * from ##tx
222
223
224
225declare @db nvarchar(60),@sql nvarchar(3000)
226
227set @db=db_name()
228
229--请修改用户名和口令 导出到Excel 中
230
231set @sql='exec master.dbo.xp_cmdshell ''bcp ..dbo.##tx out c:\'+@db+'_exp.xls -w -C936 -Usa -Psa '''
232
233print @sql
234
235exec(@sql)
236
237GO
238
239DROP TABLE ##tx
240
241GO
242
243
244
245
246
247
248
249-- ======================================================
250
251--根据表中数据生成insert语句的存储过程
252
253--建立存储过程,执行 spGenInsertSQL 表名
254
255--感谢playyuer
256
257-- ======================================================
258
259CREATE proc spGenInsertSQL (@tablename varchar(256))
260
261
262
263as
264
265begin
266
267 declare @sql varchar(8000)
268
269 declare @sqlValues varchar(8000)
270
271 set @sql =' ('
272
273 set @sqlValues = 'values (''+'
274
275 select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'
276
277 from
278
279 (select case
280
281 when xtype in (48,52,56,59,60,62,104,106,108,122,127)
282
283 then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
284
285 when xtype in (58,61)
286
287 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
288
289 when xtype in (167)
290
291 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
292
293 when xtype in (231)
294
295 then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
296
297 when xtype in (175)
298
299 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
300
301 when xtype in (239)
302
303 then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
304
305 else '''NULL'''
306
307 end as Cols,name
308
309 from syscolumns
310
311 where id = object_id(@tablename)
312
313 ) T
314
315 set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
316
317 --print @sql
318
319 exec (@sql)
320
321end
322
323
324
325GO
326
327
328
329
330
331
332
333-- ======================================================
334
335--根据表中数据生成insert语句的存储过程
336
337--建立存储过程,执行 proc_insert 表名
338
339--感谢Sky_blue
340
341-- ======================================================
342
343
344
345CREATE proc proc_insert (@tablename varchar(256))
346
347as
348
349begin
350
351 set nocount on
352
353 declare @sqlstr varchar(4000)
354
355 declare @sqlstr1 varchar(4000)
356
357 declare @sqlstr2 varchar(4000)
358
359 select @sqlstr='select ''insert '+@tablename
360
361 select @sqlstr1=''
362
363 select @sqlstr2=' ('
364
365 select @sqlstr1= ' values ( ''+'
366
367 select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case
368
369-- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
370
371 when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'
372
373 when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
374
375 when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
376
377 when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
378
379 when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
380
381 when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'
382
383 when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
384
385 when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
386
387 when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
388
389 when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
390
391 when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
392
393 when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
394
395 when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'
396
397 when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
398
399 when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'
400
401-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
402
403 when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
404
405 else '''NULL'''
406
407 end as col,a.colid,a.name
408
409 from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36
410
411 )t order by colid
412
413
414
415 select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename
416
417-- print @sqlstr
418
419 exec( @sqlstr)
420
421 set nocount off
422
423end
424
425GO
2
3--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
4
5--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
6
7-- ======================================================
8
9Select
10
11 (Case When A.Colorder=1 Then D.Name Else '' End)表名,
12
13 A.Colorder 字段序号,
14
15 A.Name 字段名,
16
17 (Case When Columnproperty( A.Id,A.Name,'Isidentity')=1 Then '√'Else '' End) 标识,
18
19 (Case When (Select Count(*)
20
21 From Sysobjects
22
23 Where (Name In
24
25 (Select Name
26
27 From Sysindexes
28
29 Where (Id = A.Id) And (Indid In
30
31 (Select Indid
32
33 From Sysindexkeys
34
35 Where (Id = A.Id) And (Colid In
36
37 (Select Colid
38
39 From Syscolumns
40
41 Where (Id = A.Id) And (Name = A.Name))))))) And
42
43 (Xtype = 'Pk'))>0 Then '√' Else '' End) 主键,
44
45 B.Name 类型,
46
47 A.Length 占用字节数,
48
49 Columnproperty(A.Id,A.Name,'Precision') As 长度,
50
51 Isnull(Columnproperty(A.Id,A.Name,'Scale'),0) As 小数位数,
52
53 (Case When A.Isnullable=1 Then '√'Else '' End) 允许空,
54
55 Isnull(E.Text,'') 默认值,
56
57 Isnull(G.[Value],'') As 字段说明
58
59From Syscolumns A Left Join Systypes B
60
61On A.Xtype=B.Xusertype
62
63Inner Join Sysobjects D
64
65On A.Id=D.Id And D.Xtype='U' And D.Name<>'Dtproperties'
66
67Left Join Syscomments E
68
69On A.Cdefault=E.Id
70
71Left Join Sysproperties G
72
73On A.Id=G.Id And A.Colid = G.Smallid
74
75Order By A.Id,A.Colorder
76
77列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息
78
79并导出到Excel 中
80
81-- ======================================================
82
83-- Export all user tables definition and one sample value
84
85-- jan-13-2003,Dr.Zhang
86
87-- ======================================================
88
89在查询分析器里运行:
90
91SET ANSI_NULLS OFF
92
93GO
94
95SET NOCOUNT ON
96
97GO
98
99
100
101SET LANGUAGE 'Simplified Chinese'
102
103go
104
105DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)
106
107
108
109SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t
110
111FROM syscolumns a, systypes b,sysobjects d
112
113WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U'
114
115
116
117DECLARE read_cursor CURSOR
118
119FOR SELECT TableName,FieldName FROM #t
120
121
122
123SELECT TOP 1 '_TableName ' TableName,
124
125 'FieldName ' FieldName,'TypeName ' TypeName,
126
127 'Length' Length,'IS_NULL' IS_NULL,
128
129 'MaxLenUsed' AS MaxLenUsed,'Sample Value ' Sample,
130
131 'Comment ' Comment INTO #tc FROM #t
132
133
134
135OPEN read_cursor
136
137
138
139FETCH NEXT FROM read_cursor INTO @tbl,@fld
140
141WHILE (@@fetch_status <> -1) --- failes
142
143BEGIN
144
145 IF (@@fetch_status <> -2) -- Missing
146
147 BEGIN
148
149 SET @sql=N'SET @maxlen=(SELECT max(len(cast('+@fld+' as nvarchar))) FROM '+@tbl+')'
150
151 --PRINT @sql
152
153 EXEC SP_EXECUTESQL @sql,N'@maxlen int OUTPUT',@maxlen OUTPUT
154
155 --print @maxlen
156
157 SET @sql=N'SET @sample=(SELECT TOP 1 cast('+@fld+' as nvarchar) FROM '+@tbl+' WHERE len(cast('+@fld+' as nvarchar))='+convert(nvarchar(5),@maxlen)+')'
158
159 EXEC SP_EXECUTESQL @sql,N'@sample varchar(30) OUTPUT',@sample OUTPUT
160
161 --for quickly
162
163 --SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+
164
165 --@tbl+' order by 1 desc ))'
166
167 PRINT @sql
168
169 print @sample
170
171 print @tbl
172
173 EXEC SP_EXECUTESQL @sql,N'@sample nvarchar(30) OUTPUT',@sample OUTPUT
174
175 INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,
176
177 convert(nchar(20),ltrim(ISNULL(@sample,' '))) as Sample,' ' Comment FROM #t where TableName=@tbl and FieldName=@fld
178
179 END
180
181 FETCH NEXT FROM read_cursor INTO @tbl,@fld
182
183END
184
185
186
187CLOSE read_cursor
188
189DEALLOCATE read_cursor
190
191GO
192
193
194
195SET ANSI_NULLS ON
196
197GO
198
199SET NOCOUNT OFF
200
201GO
202
203select count(*) from #t
204
205DROP TABLE #t
206
207GO
208
209
210
211select count(*)-1 from #tc
212
213
214
215select * into ##tx from #tc order by tablename
216
217DROP TABLE #tc
218
219
220
221--select * from ##tx
222
223
224
225declare @db nvarchar(60),@sql nvarchar(3000)
226
227set @db=db_name()
228
229--请修改用户名和口令 导出到Excel 中
230
231set @sql='exec master.dbo.xp_cmdshell ''bcp ..dbo.##tx out c:\'+@db+'_exp.xls -w -C936 -Usa -Psa '''
232
233print @sql
234
235exec(@sql)
236
237GO
238
239DROP TABLE ##tx
240
241GO
242
243
244
245
246
247
248
249-- ======================================================
250
251--根据表中数据生成insert语句的存储过程
252
253--建立存储过程,执行 spGenInsertSQL 表名
254
255--感谢playyuer
256
257-- ======================================================
258
259CREATE proc spGenInsertSQL (@tablename varchar(256))
260
261
262
263as
264
265begin
266
267 declare @sql varchar(8000)
268
269 declare @sqlValues varchar(8000)
270
271 set @sql =' ('
272
273 set @sqlValues = 'values (''+'
274
275 select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'
276
277 from
278
279 (select case
280
281 when xtype in (48,52,56,59,60,62,104,106,108,122,127)
282
283 then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
284
285 when xtype in (58,61)
286
287 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
288
289 when xtype in (167)
290
291 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
292
293 when xtype in (231)
294
295 then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
296
297 when xtype in (175)
298
299 then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
300
301 when xtype in (239)
302
303 then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
304
305 else '''NULL'''
306
307 end as Cols,name
308
309 from syscolumns
310
311 where id = object_id(@tablename)
312
313 ) T
314
315 set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
316
317 --print @sql
318
319 exec (@sql)
320
321end
322
323
324
325GO
326
327
328
329
330
331
332
333-- ======================================================
334
335--根据表中数据生成insert语句的存储过程
336
337--建立存储过程,执行 proc_insert 表名
338
339--感谢Sky_blue
340
341-- ======================================================
342
343
344
345CREATE proc proc_insert (@tablename varchar(256))
346
347as
348
349begin
350
351 set nocount on
352
353 declare @sqlstr varchar(4000)
354
355 declare @sqlstr1 varchar(4000)
356
357 declare @sqlstr2 varchar(4000)
358
359 select @sqlstr='select ''insert '+@tablename
360
361 select @sqlstr1=''
362
363 select @sqlstr2=' ('
364
365 select @sqlstr1= ' values ( ''+'
366
367 select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case
368
369-- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
370
371 when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'
372
373 when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
374
375 when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
376
377 when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
378
379 when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
380
381 when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'
382
383 when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
384
385 when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
386
387 when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
388
389 when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
390
391 when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
392
393 when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
394
395 when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'
396
397 when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
398
399 when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'
400
401-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
402
403 when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
404
405 else '''NULL'''
406
407 end as col,a.colid,a.name
408
409 from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36
410
411 )t order by colid
412
413
414
415 select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename
416
417-- print @sqlstr
418
419 exec( @sqlstr)
420
421 set nocount off
422
423end
424
425GO