开发者

SQL Server Templates - How Do I Escape The Less Than Character?

I like to use SQL Server 2005 templates to run frequently used queries. You can include parameters in your templates using this syntax:

&l开发者_如何学Pythont;LastName, varchar, 'Bob'>

I have a query that needs the less than or equals to operator <= but unfortunately the SQL Server 2005 template interprets that as the start of a parameter. I have been unable to find a way to use the < (less than character) as a literal.


when I Specify Values for Template Parameters, this runs fine for me:

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

perhaps you do not have every parameter's "<" and ">" paired properly

EDIT I see the problem now:

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

results in:

SELECT * FROM YourTable WHERE IDYourColumn IS NOT NULL

try making the "<" character into a parameter, like this:

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

it results in:

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

OR split the lines, line breaks seem to make a difference:

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

results in:

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


With template

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

If you select (menu) Query > Specify Values for template parameters, the default value for replacement is "xtype <= 60", which is correct, and upon substitution, the resulting query text is

select top 10 * from syscolumns
where xtype <= 60

which is exactly what one would expect. In other words, it does not appear to be the case that the "<" symbol needs to be escaped. However, ">" is more problematic:

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

This will fail when opening the "specify values" dialog. However, in this instance, it is fine to specify

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

and enter

xtype >= 60

in the "value" field for replacement. This produces

select top 10 * from syscolumns
where xtype >= 60

which is again as one would expect. So it would seem that the default value for replacement may not contain a ">".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜