J'ai cette longue chaîne dans l'une des colonnes de la table. Je veux avoir seulement des informations spécifiques: -
Ma structure de table: - mon instruction SELECT est la suivante: - p> mais dans le col3, j'ai juste besoin de la valeur du nom du client " BB BOB '. p> dans col3 - p> Le délimiteur de colonne est '|' Pipe Char (par exemple, «ID client = 4356HYHY») P> LI>
La valeur de la valeur de la clé de la clé est '=' égale à la signature avec un espace blanc (premier et arrière). p> li>
ul> aide s'il vous plaît. p> p>
4 Réponses :
Vous avez besoin d'une fonction fractionnée: avec votre fonction fractionnée, vous utiliseriez ensuite une application croisée pour obtenir les données: p>
Cette fonction ne donne pas de résultats cohérents. Voir Stackoverflow.com/q/12480321 pour des problèmes, y compris un violon qui démontre le problème.
Vous avez simplement besoin de faire un substrateur sur la chaîne de Col3 .... et oui, c'est une mauvaise conception de DB pour les raisons indiquées dans le numéro d'origine P > p>
C'est terrible, mais vous pouvez essayer d'utiliser
select
SUBSTRING(Table1.Col1,0,PATINDEX('%|%=',Table1.Col1)) as myString
from
Table1
Pour vos données spécifiques, vous pouvez utiliser
CHARINDEX: SQL Server Execution Times (1): CPU time = 5656 ms, elapsed time = 6418 ms. SQL Server Execution Times (2): CPU time = 5813 ms, elapsed time = 6114 ms. SQL Server Execution Times (3): CPU time = 5672 ms, elapsed time = 6108 ms. PATINDEX: SQL Server Execution Times (1): CPU time = 5906 ms, elapsed time = 6296 ms. SQL Server Execution Times (2): CPU time = 5860 ms, elapsed time = 6404 ms. SQL Server Execution Times (3): CPU time = 6109 ms, elapsed time = 6301 ms.
N'est pas Patindex ('% | nom de client =%', col3) code> identique que charindex ('| nom de client =', col3) code> et n'est pas ce dernier censé être plus rapide que le premier?
Préparez-vous à beaucoup de commentaires sur la manière dont la conception est terrible :)
Pour ramasser @ Jnk's Ball: C'est un design terrible! Mais vous pouvez toujours l'enregistrer si vous modifiez la structure de la table pour inclure une clé étrangère à une table client qui contient toutes les données ...