Шаблоны SQL Server - Как мне избежать менее чем символ? - PullRequest
4 голосов
/ 13 октября 2009

Мне нравится использовать шаблоны SQL Server 2005 для запуска часто используемых запросов. Вы можете включить параметры в свои шаблоны, используя этот синтаксис:

<LastName, varchar, 'Bob'>

У меня есть запрос, которому нужен оператор меньше или равный <= </strong>, но, к сожалению, шаблон SQL Server 2005 интерпретирует его как начало параметра. Мне не удалось найти способ использовать <</strong> (меньше символа) в качестве литерала.

Ответы [ 2 ]

3 голосов
/ 13 октября 2009

, когда я указываю значения для параметров шаблона, для меня это работает нормально:

select * from <xyz, varchar,YourTable> WHERE ID<=1000 AND ID>=20000

возможно, у вас не все параметры "<" и ">" спарены правильно

РЕДАКТИРОВАТЬ Теперь я вижу проблему:

SELECT * FROM <xyz, varchar,YourTable> WHERE ID<=1000 AND ID>=20000 AND <xyz2,varchar,YourColumn> IS NOT NULL

Результат:

SELECT * FROM YourTable WHERE IDYourColumn IS NOT NULL

попробуйте превратить символ "<" в параметр, например: </p>

SELECT * FROM <xyz, varchar,YourTable> WHERE ID<lessthan,char,<>=1000
AND ID>=20000 AND <<xyz2,varchar,YourColumn> IS NOT NULL

это приводит к:

SELECT * FROM YourTable WHERE ID<=1000
AND ID>=20000 AND YourColumn IS NOT NULL

ИЛИ разделить строки, разрывы строк, кажется, имеют значение:

SELECT * FROM <xyz, varchar,YourTable> WHERE ID<=1000 AND ID>=20000 
AND <xyz2,varchar,YourColumn> IS NOT NULL

Результат:

SELECT * FROM YourTable WHERE ID<=1000 AND ID>=20000 
AND YourColumn IS NOT NULL
0 голосов
/ 13 октября 2009

с шаблоном

select top 10 * from syscolumns
where <xtype, varchar(128), xtype <= 60>

Если вы выберете (меню) Запрос> Задать значения для параметров шаблона, значением по умолчанию для замены будет «xtype <= 60», что является правильным, и после замены полученный текст запроса будет </p>

select top 10 * from syscolumns
where xtype <= 60

это именно то, что и следовало ожидать. Другими словами, это не тот случай, когда символ «<» необходимо экранировать. Однако «>» более проблематично:

select top 10 * from syscolumns
where <xtype, varchar(128), xtype >= 60>

Ошибка при открытии диалога «указать значения». Однако в этом случае можно указать

select top 10 * from syscolumns
where <xtype, varchar(128), value>

и введите

xtype >= 60

в поле «значение» для замены. Это производит

select top 10 * from syscolumns
where xtype >= 60

что опять же, как и следовало ожидать. Поэтому может показаться, что значение по умолчанию для замены может не содержать «>».

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