J'ai une base de données relationnelle avec plusieurs champs de caractères de longueur fixe. J'ai besoin de remplacer de façon permanente tous les espaces intégrés avec un autre caractère comme Ainsi, je me suis déjà assuré qu'il n'y ait pas de chaînes avec plus d'un espace incorporé consécutif ou des espaces de pointe uniquement pour remplir les champs de longueur fixe. P> modifier em > :: Merci pour toute l'aide! P> On dirait quand j'ai coupé et collé ma question de Word à Stackoverflow Les espaces de fuite ont été perdus afin que ma question soit perdue un peu. P> Je dois remplacer uniquement les espaces embarqués et non les espaces de fuite! P> Remarque: j'utilise le point central pour rester pour des espaces qui ne montrent pas bien. P> Utilisation: - code> de John Doe code> deviendrait john-doe code> et itsy bismisie araignée code> deviendrait itsy-Bistsy-Spider code>. Je peux rechercher une main pour s'assurer qu'il n'y a pas de chaîne qui serait en conflit. J'ai juste besoin de pouvoir imprimer les fichiers demandés sans espaces intégrés. Je ferais le remplacement dans le code C mais je veux m'assurer qu'il n'y a jamais eu de cas futur où il y a un Jane DOE code> et Jane-DOE code> dans la DB. SELECT REPLACE(operator_name, ' ', '-') FROM operator_info ;
4 Réponses :
Assumer SQL Server:
update TABLE set column = replace (column, ' ','-')
Si vous utilisez MSSQL:
SELECT REPLACE(RTRIM(@name), ' ', '-') + SUBSTRING(@name, LEN(RTRIM(@name)) + 1, LEN(@NAME))
Ils exactement la même fonction est utilisé pour MySQL
Merci pour la réponse rapide! Je vais utiliser des points moyens pour mieux expliquer ma demande, j'ai besoin de remplacer que les espaces embarqués et non les espaces de fuite! Utilisation de SELECT Remplacer (Nom de commande, '', '-') à partir de opérateur_info; La chaîne "John • Doe •••••• 'est devenue" John-Doide ------------- "J'ai besoin' John-Doide •••••• '
Avec toute la fonction Remplacer est intégrée à votre base de données particulière.
mysql: http://dev.mysql.com/doc/refman /5.0/fr/string-fonctions.html#function_replace P>
Oracle: http://psoug.org/reference/translate_replace.html P>
SQLServer : http://msdn.microsoft.com/en-us/library/ms186862.aspx p>
modifier ci-dessous sur la base de votre commentaire. p>
J'ai fait cela dans SQLSERVER SYNTAX, veuillez donc modifier l'exemple au besoin. Le premier exemple réalise vraiment ce qui se passe et le second grotte dans une seule requête laide: d p>
@output strong> Dans ce cas contient votre valeur finale. P > et comme instruction SELECT. strong> p> DECLARE @inputTable TABLE (Value VARCHAR (100) NOT NULL);
INSERT INTO @inputTable (Value)
VALUES (' some test '),
(' another test ');
SELECT REPLACE (Value,
LTRIM (RTRIM (Value)),
REPLACE (LTRIM (RTRIM (Value)), ' ', '-'))
FROM @inputTable;
Merci pour la réponse rapide! Je vais utiliser des points moyens pour mieux expliquer ma demande, j'ai besoin de remplacer que les espaces embarqués et non les espaces de fuite! Utilisation de SELECT Remplacer (Nom de commande, '', '-') à partir de opérateur_info; La chaîne "John • Doe •••••• 'est devenue" John-Doide ------------- "J'ai besoin' John-Doide •••••• '
@ user1221579 J'ai inclus un exemple simple que vous devriez être capable de développer votre besoin. Veuillez accepter la solution si vous trouvez cela utile.
SELECT REPLACE(RTRIM(@name), ' ', '-') + SUBSTRING(@name, LEN(RTRIM(@name)) + 1;
Quel système de base de données utilisez-vous, MySQL, SQL Server, Oracle?
En dépit de dire de manière permanente i> dans votre question, veuillez noter que si vous souhaitez que la modification soit réversible à tout moment, vous devez choisir un caractère qui n'existe pas déjà dans les champs. Sinon, vous risquez de perdre des informations. par exemple, si vous utilisez le
- code> un nom comme Jean-Paul Sartre B> deviendra Jean-Paul-Sartre B>, et si vous essayez de l'inverser , vous obtiendrez Jean Paul Sartre B> qui peut être indésirable.