J'ai une valeur de chaîne importante que je cherche à placer dans une base de données. J'ai le code actuel pour le faire.Sélection de la valeur entre deux caractères dans la chaîne Serveur SQL
DECLARE @Value NVARCHAR(max) = {status}
DECLARE @DYVALUE TABLE (VALUE NVARCHAR(MAX))
INSERT INTO @DYVALUE (value)
SELECT @VALUE
;WITH cte
AS (
SELECT Split.a.value('.', 'VARCHAR(1000)') AS Value
FROM (
SELECT CAST('<S>' + REPLACE(Value, ',', '</S><S>') + '</S>' AS XML) AS Value
FROM @DyValue
) AS A
CROSS APPLY Value.nodes('/S') AS Split(a)
)
insert into mytable
SELECT *
FROM (
SELECT replace(LTRIM(SUBSTRING(Value, 0, CHARINDEX('|', value))),' ','') AS col1
,SUBSTRING(Value, CHARINDEX('|', Value) + 1, LEN(Value)) AS [col2]
,SUBSTRING(Value, CHARINDEX('/', Value) + 1, LEN(Value)) AS [col3]
FROM Cte
) dt
Cela me permet de tout placer avant le | dans la colonne1, et tout après/dans la colonne 3. Je dois essayer de tout placer entre la valeur '|' et «/» dans colonne2
Je me bats pour obtenir
,SUBSTRING(Value, CHARINDEX('|', Value) + 1, LEN(Value)) AS [col2]
pour ne prendre que ces valeurs entre les deux personnages.
Un exemple du type de chaîne ce sera en cours d'exécution sur est
1234567890 | Goodbye Cruel World/je devrais être dans la colonne 3, 2345678901 | Cruel World/je devrais être au revoir à la colonne 3, 3456789012 | Au revoir monde cruel/S'il vous plaît mettez-moi dans la colonne 3, 3456789012 | Au revoir monde cruel/S'il vous plaît mettez-moi dans la colonne 3, 6324589657 | Hello World/Je dois être dans Col 3, 1145698763 | Au revoir monde cruel/Je devrais être dans la colonne 3 , 36985214728 | Au revoir monde cruel/je devrais être dans la colonne 3, 7412589635 | Au revoir monde cruel/je devrais être dans la colonne 3, 7412589635 | Au revoir monde cruel/je devrais être dans la colonne 3, 6398756951 | S'il vous plaît aidez-moi/S'il vous plaît mettez-moi Colonne 3,
La chaîne sera dans ce format, je viens de changer les valeurs pour quelque chose d'un peu plus amusant.
Toute aide serait grandement appréciée.
En utilisant Microsoft SQL Server 2012 (SP3)
Je souhaite qu'il serait toujours trois mots, la quantité de mots varie désolé. – Phil
@Phil - C'était un exemple .. vérifier maintenant –
Similaire à la réponse ci-dessus, j'obtiens l'erreur "Paramètre de longueur invalide passé à la fonction GAUCHE ou SUBSTRING" en essayant d'exécuter ceci – Phil