Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
declare @ch varchar
declare @ch1 varchar
set @ch=char('39')
set @ch1=char('34')
print @ch print @ch
declare @tname sysname
declare curs cursor for
select name from sysobjects where xtype='u' and name like 'T_%'
open curs
fetch next from curs into @tname
while @@fetch_status=0
begin
select name from dbo.syscolumns where id=object_id(@tname) and xtype=167

fetch next from curs into @tname
end
close curs
deallocate curs

Добрый день всем! Подскажите пожалуйста, как мне дальше быть чтобы проверить эти поля на наличие какого нибудь символа. Спасибо заранее.
20 ноя 09, 07:31    [7954164]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1842
загадочный текст
может начать с азбуки?
20 ноя 09, 07:38    [7954174]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
muk07, че тут загадочного? с азбуки можете сами начать
20 ноя 09, 07:52    [7954184]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
А можно найти в полях таблиц БД содержашие тип varchar символ "'" Об этом идет речь.
20 ноя 09, 08:51    [7954293]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1842
В именах полей или в значениях полей?
20 ноя 09, 09:07    [7954328]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
в значениях
20 ноя 09, 09:10    [7954341]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1842
тогда я не понимаю как можно обойтись без динамического sql
- имя таблицы не может быть параметром в select
20 ноя 09, 09:18    [7954368]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Mari-Salt,
пишут руками, предварительно составив алгоритм и прочитав документацию.

set nocount on
declare @name varchar(128), @substr varchar(4000), @column varchar(128), @schema varchar(128)
declare @sql nvarchar(max)

set @substr = '%wcf%' --фрагмент строки, который будем искать
set @sql =  N''


create table #rslt 
(table_name varchar(128), field_name varchar(128), value ntext)

declare s cursor fast_forward for select table_name, table_schema from information_schema.tables where table_type = 'BASE TABLE' order by table_name
open s
fetch next from s into @name , @schema
while @@fetch_status = 0
begin
 declare c cursor fast_forward for 
	select quotename(column_name) as column_name from information_schema.columns 
	  where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname') and table_name  = @name
 set @name = quotename(@name)
 open c
 fetch next from c into @column
 while @@fetch_status = 0
 begin
  exec
   ('insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', ' + @column + 
	' from ' + @schema + '.' + @name + ' where ' + @column + ' like ''' + @substr + '''')
   fetch next from c into @column
 end
 close c
 deallocate c
 fetch next from s into @name, @schema
end

select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt
group by table_name, field_name
order by table_name, field_name
--Если нужно, можем отобразить все найденные значения
--select * from #rslt order by table_name, field_name



close s
deallocate s
drop table #rslt


 
20 ноя 09, 09:26    [7954399]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
Ken@t, ошибка у меня:
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '''.
Server: Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark before the character string '''.
Ken@t,
А можно вот это добавить
declare @ch varchar
declare @ch1 varchar
set @substr=char('39')--фрагмент строки, который будем искать
set @ch1=char('34')
set @sql = N''
20 ноя 09, 09:35    [7954439]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
у меня SQL Server 2000
20 ноя 09, 09:37    [7954445]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Mari-Salt,

бросайте это грязное дело, програмировать.
здесь о функции char () по русски

реализацию показал, дальше сами.
20 ноя 09, 09:41    [7954469]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
CHAR(32) = 'кавычка'
в тексте её надо экранировать ещё одной 'кавычкой'
20 ноя 09, 09:47    [7954495]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
Ken@t, спасибо большое!
20 ноя 09, 09:50    [7954515]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
Ken@t
CHAR(32) = 'кавычка'
в тексте её надо экранировать ещё одной 'кавычкой'


Ken@t - спасибо большое! рада очень
20 ноя 09, 10:13    [7954688]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ken@t
CHAR(32) = 'кавычка'
в тексте её надо экранировать ещё одной 'кавычкой'
CHAR(32) - это пробел, вообще-то
20 ноя 09, 10:28    [7954832]     Ответить | Цитировать Сообщить модератору
 Re: Как написать скрипт  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
iap,
)))) 39 имелось ввиду, по контексту
20 ноя 09, 10:31    [7954864]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить