/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Sammenlægge felter i et nyt felt
Fra : Michael Salomonsen


Dato : 26-08-05 11:14

Hvordan sammenlægger jeg to felter i et nyt felt i MySQL - har prøvet med
felt1 + felt2 men det lægger bare værdierne sammen - vil have det nye felt
til at indeholde felt1felt2

Eks.: felt1 = 20050825 , felt2 = 298 - nyt felt skal være 20050825298 - men
med 'update tabel set nytfelt = felt1 + felt2' giver 20051123 og det er ikke
lige det jeg ønsker

-Michael



 
 
Jens Gyldenkærne Cla~ (26-08-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-08-05 12:51

Michael Salomonsen skrev:

> Hvordan sammenlægger jeg to felter i et nyt felt i MySQL - har
> prøvet med felt1 + felt2 men det lægger bare værdierne sammen

Det må være fordi du bruger datatypen tal. Hvis du ikke skal regne
på tallene matematisk, vil det formentlig være lettere at bruge en
tekstdatatype (varchar - eller hvad den nu hedder i mysql).

4 + 2 = 6, men '4' + '2' = '42'

Hvis det ikke er muligt eller ønskeligt at skifte felttype, kan du
nøjes med at konvertere til tekst før du laver additionen, og så
konvertere tilbage til et tal for at gemme værdien. Jeg kender ikke
til typecastfunktionerne i mysql, men i MSSQL kan man skrive som
følger:

SELECT CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))

- eller (hvis der også skal konverteres tilbage til et tal):

SELECT CAST(CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))
as bigint)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Peter Lykkegaard (26-08-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 26-08-05 16:51

"Jens Gyldenkærne Clausen" wrote
> Michael Salomonsen skrev:
>
>> Hvordan sammenlægger jeg to felter i et nyt felt i MySQL - har
>> prøvet med felt1 + felt2 men det lægger bare værdierne sammen
>
> SELECT CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))
>
> - eller (hvis der også skal konverteres tilbage til et tal):
>
> SELECT CAST(CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))
> as bigint)

i MySQL?

Det ligner mere T-SQL

Peter



///M (26-08-2005)
Kommentar
Fra : ///M


Dato : 26-08-05 17:37

Peter Lykkegaard wrote:
> "Jens Gyldenkærne Clausen" wrote
>> Michael Salomonsen skrev:
>>
>>> Hvordan sammenlægger jeg to felter i et nyt felt i MySQL - har
>>> prøvet med felt1 + felt2 men det lægger bare værdierne sammen
>>
>> SELECT CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))
>>
>> - eller (hvis der også skal konverteres tilbage til et tal):
>>
>> SELECT CAST(CAST(felt1 as varchar(10)) + CAST(felt2 as varchar(10))
>> as bigint)
>
> i MySQL?
>
> Det ligner mere T-SQL

Ja, og det skriver han også... mySql er vel ikke så meget ved siden af.

--
///M



Peter Lykkegaard (26-08-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 26-08-05 18:02

"///M" wrote

> Ja, og det skriver han også... mySql er vel ikke så meget ved siden af.
>
Grumble og jeg skal lære at læse indlægget, hele indlægget og ikke mere end
indlægget

Hmm MySQL har fået CAST indbygget fra 4.0.2. og CHAR som conversiontype i
4.0.6
Så det er muligt at det virker alligevel

CONVERT (ikke nævnt) er noget anderledes syntaksmæssigt

- Peter



Peter Brodersen (26-08-2005)
Kommentar
Fra : Peter Brodersen


Dato : 26-08-05 17:35

On Fri, 26 Aug 2005 12:13:46 +0200, "Michael Salomonsen"
<michaels.fjerntal1234@multicom.dk> wrote:

>Hvordan sammenlægger jeg to felter i et nyt felt i MySQL - har prøvet med
>felt1 + felt2 men det lægger bare værdierne sammen - vil have det nye felt
>til at indeholde felt1felt2

Du sammenlægger værdier med CONCAT(), fx:
SELECT CONCAT('foo','bar') ...

Så hvis du insisterer, så:
update tabel set nytfelt = concat(felt1,felt2)

--
- Peter Brodersen

Peter Brodersen (26-08-2005)
Kommentar
Fra : Peter Brodersen


Dato : 26-08-05 18:10

On Fri, 26 Aug 2005 18:35:26 +0200, Peter Brodersen
<usenet2005@ter.dk> wrote:

>Så hvis du insisterer, så:
>update tabel set nytfelt = concat(felt1,felt2)

... og for en god ordens skyld:
http://dev.mysql.com/doc/mysql/en/string-functions.html#id2828938

"A numeric argument is converted to its equivalent binary string form;
if you want to avoid that you can use explicit type cast, like in this
example: SELECT CONCAT(CAST(int_col AS CHAR), char_col)"

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409083
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste