сокращение tsql соответствует - PullRequest
2 голосов
/ 29 марта 2012

Мне нужно сопоставить аббревиатуры, где точка означает все, что начинается, например:

Rows:
  blue love
  abo love
  comeb love
  blue lauer
  blue alo

(a)

Input:
  b. love

Expected output:
  blue love

(b)

Input:
 b. l.

Expected output:
  blue love
  blue lauer

Любой совет?

Ответы [ 2 ]

5 голосов
/ 29 марта 2012

Вы можете конвертировать. в%, чтобы вы могли сделать LIKE

SELECT @yourfilter = REPLACE(@yourfilter, '.', '%');

Тогда просто используйте это:

SELECT * FROM TABLE WHERE COLUMN LIKE @yourfilter

Это будет эквивалентно:

SELECT * FROM TABLE WHERE COLUMN LIKE 'b% love'

OR

SELECT * FROM TABLE WHERE COLUMN LIKE 'b% l%'

Вот рабочий пример SQL Fiddle

1 голос
/ 29 марта 2012

Вы можете сделать что-то вроде:

CREATE PROCEDURE abrieviate
(
@delim          char,
@word           varchar(20)
)

AS

SELECT TOP 1 * 
FROM Table
WHERE CHARINDEX(WORD_FIELD, @delim) > 0
AND WORD_FIELD LIKE '%' + @word + '%'

GO

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