2010-12-12 18 views
0

I possède une entrée:séparation d'expression SQL

(123)555-234-556,(321)333-324-223 

I nécessité de séparer et d'attribuer la première moitié (jusqu'à ce que la virgule) à la variable A et la seconde moitié de la variable B. Aussi ai besoin d'être capable de former les parties à quelque chose comme:

123-555-234-556 
+2

Pour confirmer, est cette chaîne entière est stockée dans une colonne? Cela vous aidera à savoir quel système de gestion de base de données vous utilisez. MySQL? Serveur SQL? Oracle? – VoteyDisciple

Répondre

0

solution PostgreSQL:

 
SELECT substring(t,2,3)||'-'||substring(t,6) 
FROM unnest(string_to_array('(123)555-234-556,(321)333-324-223',',')) as t 
0

alternatif PostG Solution reSQL, en supposant que vous voulez les valeurs dans deux colonnes distinctes:

D'abord les deux d'entre eux dans deux colonnes (je soupçonne que vous vouliez dire des colonnes).

select 
substring(input,0,position(',' in input)) as A, 
substring(input,position(',' in input)+1) as B 
from (select '(123)555-234-556,(321)333-324-223'::varchar as input) fakeInput 

la deuxième partie est alors

substring(A,2,3) || '-' || substring(A,6) as modifiedA