J'ai une colonne dans SQL Server qui a une chaîne qui ressemble à ceci. J'essaie d'obtenir la valeur du "quelque_id" qui dans ce cas serait '12345678911 ". Toute aide sur la façon dont je pourrais obtenir une valeur numérique.
Je n'arrive pas à l'obtenir à l'aide de la soustrine () code> et charindex () code> fonctions. select TOP 100 SUBSTRING(col,CHARINDEX('some_id',col), 28)
From tableName
-- RESULT
-- some_id""=>""12345678911"
3 Réponses :
Pour votre exemple donné, les renvoient le résultat requis. Vous venez de créer une sous-chaîne à partir de votre point de départ, puis de trouver la prochaine paire de guillemets, puis sous-chaîne entre le point de départ et la prochaine paire de citations doubles: qui peut être combiné dans un Déclaration unique, mais vous pouvez voir que le code duplicate, donc je trouve la séparation de la séparation est plus clair: p>
Vous pouvez aller avec la requête ci-dessous pour un exemple donné.
;WITH CTE
AS
(
SELECT *
FROM (
VALUES(' """some_id""=>""12345678911"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""'),
(' """some_id""=>""23428324"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""'),
(' """some_id""=>""8934587349"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""')
) V (String)
)
SELECT SUBSTRING(String,
CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""'),
(CHARINDEX('""', String, CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""')))-(CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""')))
FROM CTE
Vous pouvez facilement convertir cela en une fonction: renvoie p> fonction d'échantillon: p> SELECT TOP 100 dbo.GetVal ( col, 'some_id""=>""' ) AS [Value]
FROM tableName;
Salut Dale - Je viens d'éditer mon post original avec où je suis coincé
Il s'agit donc d'un exemple précis de données dans la colonne, avec toutes ces citations doubles
"" "" "" "=>" "12345678911" "" "" "" "" "" "" "" "." "" " "=>" "Faux" "," "AntherString" "=>" "0" " code>Oui, c'est exactement ce à quoi ça ressemble.
Le format de la chaîne sera identique. Droite? Je veux dire comme "" {quelque_id} "" => "" {chiffres} "". c'est "" quelque_id "" => "" 12345678911 ""
Salut Mohit, c'est correct. C'est la même chose sur toutes les lignes.
D'accord, je viens de répondre