PostgreSQL mise à JOUR de la sous-chaîne de remplacement
J'ai quelques lignes dans une base de données de test où il y a des signes dollar précédé de la valeur. Je veux UPDATE
les valeurs de la name
ligne de la test1
tableau cependant, quand j'ai lancé la requête suivante ensemble, il a vidé les six lignes de données dans la name
colonne...
UPDATE test1 SET name=overlay('$' placing '' from 1 for 1);
Donc, "$utilisateur" est devenue "" quand j'ai prévu pour cette colonne/rangée de valeur pour devenir "l'utilisateur".
Comment puis-je combiner la mise à JOUR et un substr remplacement sans supprimer les autres données?
Si il n'y a pas un signe de dollar je veux la ligne rester intacts.
Le signe du dollar ne se produit que le premier caractère quand elle survient.
name = replace(name, '$', '')
- Merci, ça marche. Pas assez de réputation à voter malheureusement je suis curieux de savoir comment le faire si le signe dollar est le premier caractère? Je l'ai essayé et il a remplacé le symbole du dollar indépendamment de la position. J'ai essayé
UPDATE test1 SET name = replace(name, '$', '', from 1 for 1);
sans succès; si vous s'il vous plaît poster une réponse, je serais heureux de l'accepter.
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez remplacer tous les signes dollar, utilisez ceci:
Si vous souhaitez remplacer le
$
seulement au début de la valeur que vous pouvez utilisersubstr()
et unwhere
clause de modifier uniquement les lignes où la colonne commence par un$
substr
, j'imagine qu'il n'est pas possible de combinerreplace
avecFROM
alors?replace()
fonction. Pour les plus complexes remplacer les tâches que j'utilise habituellementregexp_replace()
replace
etFROM
serait plus efficace que l'utilisation d'une expression régulière? Je suis assez bon à la regex bien que l'éviter, sauf si j'ai vraiment besoin de couper vers le bas sur la charge du serveur.