Dans SQL Server 2005Pourquoi RIGHT (@foostr, 0) renvoie NULL lorsque @foostr est varchar (max)?
Si je veux trouver le plus à droite d'un caractère d'une variable varchar (max), pas de problème:
declare @foostr varchar(max)
set @foostr = 'abcd'
select right (@foostr, 1)
----
d
Si je veux trouver les plus à droite zéro caractères d'un littéral de chaîne, pas de problème:
select right ('abcd', 0)
------------------
Il renvoie une chaîne vide.
Si je veux trouver les personnages les plus à droite d'un zéro varchar (10), pas de problème:
declare @foostr varchar(10)
set @foostr = 'abcd'
select right (@foostr, 0)
----
Il retourne une chaîne vide.
Si je veux trouver les personnages les plus à droite d'un zéro varchar (max), ainsi:
declare @foostr varchar(max)
set @foostr = 'abcd'
select right (@foostr, 0)
----
NULL
Il retourne NULL. Pourquoi?
Je dois vous demander pourquoi vous voulez faire cela? – HLGEM
il suffit d'utiliser: 'ISNULL (right (@foostr, 0), '')' et vous êtes bon pour aller ... –
C'était il ya un certain temps; Je ne me souviens pas exactement - juste pour m'amuser j'essayais d'écrire un string.reverse(), et je parcourais une chaîne et déplaçait des personnages, et à la dernière itération la ligne: set @string = substring (@ string, @index, 1) + left (@string, @index) + right (@string, len (@string) - @index) retourné NULL au lieu de la chaîne finale inversée. Ou quelque chose comme ça. –