Quelle est la meilleure façon dans SQL Server de faire
SELECT
SUBSTRING('CATCH ME IF YOU CAN', 2, 10000)
-- ATCH ME IF YOU CAN
sans limite supérieure?
3 Réponses :
Utilisez plutôt STUFF ( STUFF (Transact-SQL) ):
SELECT STUFF('2019-07-09 11:38:00',11,1,'T');
Ici, STUFF remplace 1 caractère, de position 1 avec la chaîne '' . Le 2ème paramètre est la position de départ et le 3ème est le nombre de caractères (à partir de cette position) à remplacer. La quatrième est la chaîne de remplacement.
Donc, comme exemple supplémentaire, vous pouvez faire quelque chose comme ceci:
SELECT STUFF('CATCH ME IF YOU CAN',1,1,'');
Ceci remplace 1 caractère de la position 11 avec le caractère 'T' , qui renvoie '2019-07-09T11: 38: 00' , en changeant la valeur ci-dessus au format ISO8601. Comme vous pouvez le voir, la longueur de la chaîne à remplacer n'a pas besoin d'être la même longueur que la chaîne de remplacement (en fait, le 3ème paramètre peut avoir une valeur de 0 , ce qui signifie que non les caractères sont remplacés et la chaîne de "remplacement" est simplement injectée dans la valeur existante).
SELECT STUFF ('/ KKBGC / CHBusinessUmsatz', 1, LEN ('/ KKBGC'), '') renvoie / CHBusinessUmsatz
@LudovicAubert Pourquoi avez-vous une fonction LEN là-dedans? Qu'est-ce que votre commentaire essaie de dire?
C'est le cas d'utilisation qui m'a poussé à poser cette question en premier lieu.
Il existe probablement des équivalents dans d'autres dialectes SQL, @LudovicAubert. Un Google m'a montré que MySQL a la fonction INSERT () < / code>: Quel est l'équivalent MySQL de STUFF ( ) dans SQL Server?
Utilisation de LEN () avec la variable
SELECT SUBSTRING('CATCH ME IF YOU CAN', 2, LEN('CATCH ME IF YOU CAN'));
ou directement avec LEN()
DECLARE @Val AS VARCHAR (MAX) = 'CATCH ME IF YOU CAN'; SELECT SUBSTRING(@Val, 2, LEN(@Val));
Vous pouvez utiliser Fonction RIGHT () , combinée avec LEN () .
Tout ce que vous avez à faire est de soustraire de LEN () le nombre de caractères que vous souhaitez exclure du début de la chaîne:
SELECT RIGHT('CATCH ME IF YOU CAN', LEN('CATCH ME IF YOU CAN') - 1)