2010-05-06 5 views
-4

La base de données comprend une table avec des lignes: html/css/java/phpsql supprimer de lignes valeur à

Comment avec requête SQL supprimer "java"?

Le résultat serait: html/css/php

+0

Pour vous clarifier avez une table qui a une colonne varchar qui se compose parfois de 'html/css/java/php' et qui veut enlever' java/'de toutes les occurrences? – ahsteele

+0

S'agit-il d'une seule ligne avec le texte "html/css/java/php" ou plusieurs lignes? –

+0

Un exemple aurait été bon. – aioobe

Répondre

2

essayer cette (syntaxe SQL Server, question ne précise pas quelle base de données):

DECLARE @YourTable table (YourColumn varchar(500)) 
INSERT INTO @YourTable VALUES ('html/css/java/php') 
INSERT INTO @YourTable VALUES ('html/css/java') 
INSERT INTO @YourTable VALUES ('java/php') 
INSERT INTO @YourTable VALUES ('java') 
INSERT INTO @YourTable VALUES ('html/css/php') 


UPDATE @YourTable 
    SET YourColumn=REPLACE(
           REPLACE(
              REPLACE(YourColumn,'/java','') 
              ,'java/','' 
            ) 
           ,'java','' 
         ) 

select * from @YourTable 

SORTIE

YourColumn 
------------------- 
html/css/php 
html/css 
php 

html/css/php 

(5 row(s) affected) 
3

Voir http://www.w3schools.com/sql/sql_delete.asp pour plus de détails sur DELETE.

DELETE FROM TableName WHERE yourColumn = 'java' 
+0

La question est difficile à comprendre, mais comment cette réponse répond-elle à la question? La question dit que vous commencez avec les données de ligne: 'html/css/java/php' et ils veulent le changer en une ligne avec des données:' html/css/php'? –

+0

J'ai lu "lignes" au pluriel, et juste supposé que ce qui vient après cela fait référence à plusieurs lignes. (Maintenant, je vois, cependant, qu'il a écrit "un rang" ce qui le rend encore moins clair!) Quoi qu'il en soit, si son intention était de mettre à jour "html/css/java/php" à "html/css/php" je doute il aurait utilisé le terme "supprimer", mais je pourrais bien sûr me tromper. – aioobe

+0

Je peux voir votre point maintenant, je suppose que l'anglais n'est pas la langue maternelle de OPs et de telles nuances subtiles ont été perdues dans la traduction. –

1

Je ne suis pas entièrement sûr de ce que vous demandez, parce que votre question n'est pas très claire.

Si « html », « css », « java » et « php » sont des valeurs différentes pour la même colonne, c'est ce que vous voulez:

DELETE FROM table_name WHERE column_name = 'java'; 

Vous devrez remplacer « nom_table "avec le nom de votre table et" column_name "avec le nom de votre colonne.

0

Je ne suis pas sûr de ce que vous voulez réaliser ... Si vous devez supprimer la colonne « java », il devrait ressembler à

ALTER TABLE table1 DROP COLUMN java 
1

S'il y a 4 lignes alors la réponse de Aioobe détiendrait bien. Si vous souhaitez mettre à jour la colonne, mais laisser de Java, vous devez utiliser:

UPDATE table_name SET column_name = Replace(column_name,'java/','') 

SI vous voulez récupérer les informations laissant que les données utilisent alors:

SELECT Replace(column_name,'java/','') column_name FROM table_name 

HTH

+0

+1 ... il semble que l'utilisateur souhaite supprimer une sous-chaîne. Le remplacer par du blanc devrait faire l'affaire! –

+0

que se passe-t-il si le 'java' est le dernier élément de la colonne (pas de"/")? –

+0

@ KM- Je viens de répondre au scénario exact. Votre solution serait bien alors :-) – Raja

0

Voici une autre supposition:

SQL> select * from t23 
    2/

WHATEVER 
---------------------------------------------------------------- 
html/css/java/php 

SQL> update t23 
    2 set whatever = replace(whatever, '/java', null) 
    3 where whatever like '%/java%' 
    4/

1 row updated. 

SQL> select * from t23 
    2/

WHATEVER 
---------------------------------------------------------------- 
html/css/php 

SQL> 

Il existe d'autres façons de faire la même chose. Par exemple, certaines saveurs de soutien de base de données utilisant l'expression rationnelle de la même manière

Questions connexes