Функция T-SQL для генерации кратких заголовков?

Быстрая проверка, чтобы видеть, имеет ли кто-либо или знает о функции T-SQL, способной к генерации кратких заголовков от данного входа nvarchar. т.е.;

"Привет Мир"> "привет мировой"
"Это - тест"> "this-is-a-test"

У меня есть функция C#, которую я обычно использую в этих целях, но в этом случае у меня есть большой объем данных, чтобы проанализировать и превратиться в краткие заголовки, таким образом, имеет больше смысла делать это на SQL Server, а не иметь для передачи данных по проводу.

Как в стороне, у меня нет доступа Удаленного рабочего стола к полю, таким образом, я не могу выполнить код (.NET, Powershell и т.д.) против него

Заранее спасибо.

Править: Согласно запросу, вот функция, которую я обычно использую для генерации кратких заголовков:

public static string GenerateSlug(string n, int maxLength)
{
    string s = n.ToLower();                
    s = Regex.Replace(s, @"[^a-z0-9s-]", "");              
    s = Regex.Replace(s, @"[s-]+", " ").Trim();             
    s = s.Substring(0, s.Length <= maxLength ? s.Length : maxLength).Trim();             
    s = Regex.Replace(s, @"s", "-"); 
    return s;
}
7
задан Jeremy Cade 23 June 2010 в 02:07
поделиться

2 ответа

Это то, что я придумал в качестве решения. Не стесняйтесь исправлять / изменять при необходимости.

Я должен упомянуть, что база данных, для которой я сейчас разрабатываю, нечувствительна к регистру, поэтому LOWER (@str).

CREATE FUNCTION [dbo].[UDF_GenerateSlug]
(   
    @str VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @IncorrectCharLoc SMALLINT
SET @str = LOWER(@str)
SET @IncorrectCharLoc = PATINDEX('%[^0-9a-z ]%',@str)
WHILE @IncorrectCharLoc > 0
BEGIN
SET @str = STUFF(@str,@incorrectCharLoc,1,'')
SET @IncorrectCharLoc = PATINDEX('%[^0-9a-z ]%',@str)
END
SET @str = REPLACE(@str,' ','-')
RETURN @str
END

Ссылка на: http://blog.sqlauthority.com/2007/05/13/sql-server-udf-function-to-parse-alphanumeric-characters-from-string/ для исходный код.

9
ответ дан 6 December 2019 в 05:48
поделиться

Вы можете использовать LOWER и REPLACE для этого:

SELECT REPLACE(LOWER(origString), ' ', '-')
FROM myTable

Для оптового обновления колонки (код устанавливает колонку slug в соответствии со значением колонки origString:

UPDATE myTable
SET slug = REPLACE(LOWER(origString), ' ', '-')
13
ответ дан 6 December 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: