Строка поиска, основанная на длине параметра и начале пути - PullRequest
1 голос
/ 26 января 2012

Может ли кто-нибудь помочь с моей строкой поиска. У меня есть apth, как 1-1-1, и может быть 10-20-1, и я хочу выбрать только первый символ на основе длины параметра, например, если я передам 10, он выберет только Path_String 10, которые начинаются с 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 + '%';

ВЫБРАТЬ * ОТ @ Сообщений

Ответы [ 3 ]

3 голосов
/ 26 января 2012

Удалите первый знак%, и это должно сделать выбор, начиная все с вашего параметра и заканчивая тем, чем он заканчивается.

Он также работал следующим образом после того, как подумал. И «-» не было проблемой там.

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 голос
/ 26 января 2012

Вот, пожалуйста.это решит вашу проблему. ЗАЯВИТЕ @dash varchar (2)

set @dash = NCHAR(8211)

SELECT ID, AddedBy, Title, Path_String 
FROM MyTable 
WHERE Path_String Like  @Paramter + @dash + '%';
1 голос
/ 26 января 2012
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 + '-%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...