Salut a tous j'ai fais un post il n'y a pas longtemps sur la BDD sur laquelle je travaille
Si il vous manque quelques précisions sur ce post je vous conseille d'aller lire ce lien :
https://www.developpez.net/forums/d1...onnee-d-table/
Mais pour faire simple je dois récuperer des infos sur plein de table et en faire une synthèse, ce coup si je dois récupérer un numéro de MSN
qui est présent dans la colonne Del_Date_Text de la table SO_Items le MSN seras présenté sous la forme "MSN[un certain nombre de chiffre de 0 à 9]"
dans la colonne. Le soucis c'est que les cases de la colonne peuvent être vide ou être remplis avec d'autre info qui ne me sont pas utile
je voudrais donc seulement récupérer ce numéro de MSN ou mettre NULL quand ça ne m’intéresse pas dans ma table EXTRACT_CR pour ça j'ai fait ce bout de requête
Si je laisse la requête comme ça ça vas me remplir EXTRACT_CR.MSN_No avec toutes les colonnes "bien" remplis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 UPDATE PARADEMODW.dbo.[EXTRACT_CR] SET PARADEMODW.dbo.[EXTRACT_CR].[MSN_No] = --CASE WHEN CHARINDEX('MSN[0-9]+', RTRIM(LTRIM(SO.[Del_Date_Text]))) > 0 THEN SUBSTRING(RTRIM(LTRIM(SO.[Del_Date_Text])), CHARINDEX('MSN[0-9]+', RTRIM(LTRIM(SO.[Del_Date_Text]))), LEN(RTRIM(LTRIM(SO.[Del_Date_Text]))) + 1 - (CHARINDEX('MSN[0-9]+', RTRIM(LTRIM(SO.[Del_Date_Text]))) + CHARINDEX('[0-9]+NSM', REVERSE(RTRIM(LTRIM(SO.[Del_Date_Text])))))) --ELSE NULL END FROM PARADEMODW.dbo.[EXTRACT_CR] AS result INNER JOIN [SO_Items] AS SO ON result.[Part_No] = SO.[Part_No] AND result.[SO_No] = SO.[SO_No] AND result.[SO_Line_No] = SO.[SO_Line_No]
C-A-D avec tout les MSN et mais aussi les infos que ne souhaite pas avoir (ma requête aura virer au passage les espaces qui traînent)
Et si je vire ma condition en commentaire ça me remplis toutes les cases avec NULL.
J'ai 3 pistes sur l'erreur que j'ai pus faire, sois j'ai foiré ma condition,
soit c'est le traitement de mes chaînes de caractères dans le bout de code entre mes 2 commentaires qui foire
(Mais étrangement ça quand même un bon comportement quand ça tombe sur une cases qui comporte un MSN)
soit c'est CHARINDEX qui a un comportement et que je comprend pas dans ma condition
Avant qu'on me fasse la remarque (C'est pour toi SQL_Pro) je peut pas changer mes appels de table
c'est imposé comme ça par mon entreprise/Responsable.
Si vous avez une alternative au combo LTRIM/RTRIM je dis pas non (Je travaille sous SQL Server 2008 donc TRIM tout seul marche pas)
Merci d'avance à ceux qui participe à la conversation
Gardez le feu brûlant dans votre cœur
Partager