#sql #sql-server #string
#sql #sql-сервер #строка
Вопрос:
Я пытаюсь создать ссылку в SQL, но я всегда получаю ошибку при преобразовании
SELECT DISTINCT ', ' CONVERT(nvarchar(max),'<a href="javascript:void(0);" onclick=doit("openme","amp;id="' id '"<a>')
FROM mytable
Если я использую cast
вокруг идентификатора, это работает, но нужно ли мне добавлять cast
к каждому отдельному значению, которое я использую?
Ответ №1:
Я подозреваю, что id
это число, а не строка. При запросе
смешанных числовых и строковых операндов SQL Server пытается принудительно преобразовать строку в число, чего вы не хотите.
Используется простое решение concat()
: эта функция принудительно преобразует строку для всех своих операндов.
SELECT CONCAT(
', ',
'<a href="javascript:void(0);" onclick=doit("openme","amp;id="',
id,
'"<a>'
) newval
FROM mytable
Ответ №2:
Используется CONCAT
для неявного преобразования значений в (n)varchar
:
SELECT CONCAT(', ','<a href="javascript:void(0);" onclick=doit("openme","amp;id="', id,'"<a>')
FROM mytable;
Здесь также нет необходимости использовать MAX
длину, поскольку мы можем с уверенностью сказать, что ваш id
столбец не будет содержать и близко 8000 символов.
Ответ №3:
Предполагая, что вы используете SQL Server 2016 , и это id
an int
, вы FORMATMESSAGE
также можете использовать.
SELECT
FORMATMESSAGE( ', <a href="javascript:void(0);" onclick=doit("openme","amp;id="%i"<a>', id ) AS link
FROM mytable;
Комментарии:
1. но я использую материал, и это, похоже, не является решением проблемы
2. @Jan Вы используете
STUFF
as в функции? Если да, можете ли вы обновить свой вопрос полным примером того, что вы пытаетесь? Также, пожалуйста, пометьте свою версию SQL Server.