Sélectionnez la chaîne jusqu'à la première ou deuxième espace dans la chaîne de
J'ai une colonne de tableau qui contient dans chaque ligne de données comme ceci:
| Simbols |
|--------------------------------------|
|H412 Text text |
|H413 Text text text text |
|EUH 001 Text text text text text text |
|EUH 006 text text |
|EUH 201/201A Text text. Text text |
Et j'ai besoin de données obtenir des données comme ceci:
|Simbols |
|------------|
|H412 |
|H413 |
|EUH 001 |
|EUH 006 |
|EUH 201/201A|
J'ai essayé avec la sous-CHAÎNE et CHARINDEX mais jusqu'à la fin ne fonctionne pas... Il faut seulement le premier espace ou quelque chose comme ça...
REQUÊTE:
SELECT
CASE
WHEN SUBSTRING(Simbols, 1, CHARINDEX(' ', Simbols)) = ''
THEN Simbols + ' '
ELSE SUBSTRING(Simbols, 1, CHARINDEX(' ', Simbols))
END 'Simbols'
FROM dbo.table
RÉSULTAT:
| Simbols |
|------------|
|H412 |
|H413 |
|EUH |
|EUH |
|EUH |
Comment puis-je faire ce travail, et où est le problème?
Peut-être il y a différentes façon d'obtenir ces Simbols?
P. S. "du texte du Texte du texte" est un exemple, il est une des explications de "Simbols"
- Si c'est le second espace, alors pourquoi sont les 2 premiers dans les résultats que vous souhaitez arrêter à la première?
- Voulez-vous supprimer le caractère du TEXTE à partir de chaque ligne et afficher le reste?
- Essayez d'Expressions Régulières répondu en stackoverflow.com/questions/986826/...
- Que "Texte" n'est qu'un exemple, il y a un texte différent!
- Quelle est la règle?
Vous devez vous connecter pour publier un commentaire.
Le
CharIndex()
function a une option de 3ème paramètre -start_location
- qui sera la clé ici.Malheureusement lors de la
CharIndex()
fonction ne peut pas trouver la chaîne spécifiée (dans ce cas, un seul espace' '
), il va retourner la valeur 0 (zéro).Cela signifie que si il n'y a pas de premier ou de deuxième espace, le résultat de
first_two_words
dans mon exemple ci-dessus renvoie une chaîne vide commeSubString(your_column, 1, 0) = ''
.Pour contourner cela, vous devez être un peu intelligent.
Essentiellement, si
second_space = 0
ensuite, nous devons retourner à la chaîne complète. Nous avons quelques options pour cela:Essayer quelque chose comme cela:
Sql Violon: http://sqlfiddle.com/#!2/d5cf8/4
pour plus d'info :http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Essayez ceci: Il fonctionne
Voici la capture d'écran de ce que j'ai essayé.
Voici une nouvelle MODIFIER
Voici capture d'écran