J'ai besoin d'une expression SSIS pour obtenir la partie gauche d'une chaîne avant le séparateur, puis placer la nouvelle chaîne dans une nouvelle colonne. J'ai vérifié dans la colonne dérivée, il semble pas de telles expressions. "Substring" peut uniquement renvoyer une partie de chaîne de longueur fixe.
Par exemple, avec la chaîne de séparation '-':
Art-Reading Should return Art
Art-Writing Should return Art
Science-chemistry Should return Science
P.S. Je savais que cela pourrait être fait dans MySQL avec SUBSTRING_INDEX (), mais je cherche un équivalent dans SSIS, ou du moins dans SQL Server.
bien sûr vous pouvez:
configurez simplement vos colonnes dérivées comme ceci:
Voici l'expression pour vous simplifier la vie:
SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)
FYI, le second "1" signifie obtenir la première occurrence de la chaîne "-"
EDIT: Expression pour traiter une chaîne sans "-"
FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name
Mieux vaut tard que jamais, mais je voulais faire ça aussi et j'ai trouvé ça.
TOKEN(character_expression, delimiter_string, occurrence)
TOKEN("a little white dog"," ",2)
renvoie peu la source est en dessous
Vous pouvez spécifier la longueur à copier dans la fonction SUBSTRING
et rechercher l'emplacement du tiret à l'aide de CHARINDEX
.
SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)
Pour l'expression SSIS, c'est à peu près le même code:
SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)
si SUBSTRING length param renvoie -1, cela entraîne une erreur, "La longueur -1 n'est pas valide pour la fonction" SUBSTRING ". Le paramètre length ne peut pas être négatif. Définissez le paramètre length sur zéro ou une valeur positive."