2010-10-07 4 views
1

У меня есть таблица SQL Server со столбцами Lvl и Title. Мне нужно вставить «-» перед заголовком для каждого символа в поле Lvl.SQL Server: LENGTH() внутри REPLICATE()

В качестве примера: Если Lvl = 111 название должно быть --- My Title.

Я могу редактировать только следующую строку SQL. Нет возможности создавать другие функции или аналогично.

SELECT REPLICATE('_', { fn LENGTH(Lvl) }) + ' ' + Title AS Title 
FROM Documents 

Моя проблема в том, что функция LENGTH() не работает внутри функции REPLICATE(). Кто-нибудь знает, почему и как решить эту проблему?

спасибо.

+1

Вы делаете это в функции или хранимой процедуре? Ваш код отлично работает для меня в Query Analyzer. Какую версию SQL Server вы используете? – LittleBobbyTables

+0

Любое обновление по этому вопросу? – LittleBobbyTables

ответ

1

Попробуйте это:

SELECT REPLACE(Lvl, '1', '-') + ' ' + Title as Title 
FROM Documents 

Просто возьмите Lvl колонок, и заменить все экземпляры 1 с любым символом, который вы хотите, то сцепить Заголовок к концу результата.

0

Попробуйте это. Он отлично работает для меня -

select REPLICATE('-',LEN(Lvl)) + ' ' + Title as title from documents 
+0

LEN() не работает в версии, которую я использую ... Функция LENGTH() работает, если она не находится внутри функции REPLICATE(). – user276289

+1

@ user276289 - Вы можете указать, какую версию SQL-сервера вы используете. Я тестировал это на SQL Server 2005. Ваш выбор из вопроса работает для меня отлично. –