根据参数长度和路径起点搜索字符串

时间:2012-01-26 00:05:16

标签: sql sql-server sql-server-2008

有人可以帮助我的搜索字符串。我有1-1-1的apth,可能有10-20-1,我只想根据参数长度选择第一个字符,例如,如果我传入10,它将只选择以10开头的Path_String 10或它是1它将选择Path_string从1开始

SELECT ID, AddedBy, Title, Path_String FROM MyTable
WHERE Path_String Like '%' + @Paramter + '%'; this isn't what I want.

DECLARE @dash varchar(2)
set @dash = NCHAR(8211)
DECLARE @Posts Table(PostID int, AddedBy nvarchar(50), Title varchar(100), Path_String varchar(max));
INSERT INTO @Posts 
SELECT PostID, AddedBy, Title, Path_String FROM Posts WHERE Path_String Like  @threadID + @dash + '%';

SELECT * FROM @Posts

3 个答案:

答案 0 :(得分:3)

删除第一个%符号,然后选择从参数开始选择并结束任何结尾。

在考虑之后,它也以下列方式工作。 并且' - '在那里不是问题。

1.完全匹配

declare 
@n varchar(3)
set @n='12'
select * from t
where SUBSTRING(t,0,CHARINDEX('-',t)) = @n

t
----------
12-12-12
12-13-14
12-13-14

2.基于参数的长度:

declare 
@n varchar(2)
set @n='12'
select * from t
where len(SUBSTRING(t,0,CHARINDEX('-',t))) = len(@n)

t
----------
12-12-12
22-22-22
33-33-33
31-31-31
12-13-14
12-13-14

干杯

答案 1 :(得分:1)

here use string methods to get index and substring to parse. i didn't execute this so fix the error you encounter. atleast this will give you an idea.

SELECT ID, AddedBy, Title, Path_String 
FROM MyTable 
WHERE Path_String Like @Paramter + '-%';

答案 2 :(得分:1)

你走了。这将解决您的问题.DECLARE @dash varchar(2)

set @dash = NCHAR(8211)

SELECT ID, AddedBy, Title, Path_String 
FROM MyTable 
WHERE Path_String Like  @Paramter + @dash + '%';