Избавляемся от внешних ANSI-соединений "= *" "* =" - как настроить поиск в Windows - PullRequest
0 голосов
/ 11 сентября 2009

Мы рассматриваем возможность обновления MSFT SQL 2000 до 2005. Я пытаюсь запустить поиск файлов Windows в нашей базе кода, но похоже, что поиск '*=' не работает сразу Возможно * это какой-то подстановочный знак?

Ответы [ 3 ]

1 голос
/ 11 сентября 2009

Где хранятся ваши запросы? Если они являются процедурами в базе данных, никакой поиск по файлам не поможет вам. Если они в вашем клиентском коде, используйте функцию поиска в вашей IDE. Если они действительно находятся в файлах sql на диске, мне это показалось бы очень странным.

0 голосов
/ 11 сентября 2009

Для поиска хранимых проков, содержащих страшные = * или * =, вы можете использовать какой-то вариант этого

select  o.name,c.text
FROM yourdatabase..syscomments c(NOLOCK) 
     JOIN yourdatabase..sysobjects o(NOLOCK) ON c.id=o.id
where text like '%*=%' or text like '%=*%'

Замените название вашей базы данных, конечно.

Чтобы расширить мой комментарий ранее о том, как вам нужно найти и исправить, обновляете ли вы или нет, SQL Server 2000 не работает, когда дело доходит до использования = * или * =. Иногда он интерпретирует их как внешние объединения, а иногда интерпретирует их как перекрестные объединения, что дает совершенно другой набор результатов. Такое поведение настолько плохое, что не рекомендуется использовать этот синтаксис в любой версии SQL-сервера начиная с 2000 года (я не могу говорить о более ранних версиях)

0 голосов
/ 11 сентября 2009

Получите себе копию Cygwin и используйте «настоящие» инструменты поиска, такие как grep :-) Я никогда не доверял поиску Windows, так как уверен, что он выполняет поиск только в зарегистрированных типах файлов (хотя это могло измениться с момента последней раз посмотрел).

Командная строка findstr работает лучше для всех типов файлов, поэтому вы можете использовать что-то вроде:

findstr /s /l "*=" *.sql

в вашем каталоге верхнего уровня. /s говорит ему искать во всех подкаталогах, а /l означает буквальный поиск. Он может даже делать регулярные выражения, если вы так склонны - для подробностей запустите findstr /? из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...