webForumDet fria alternativet

Splitta kolumn till 2

6 svar · 387 visningar · startad av b3rra

b3rraMedlem sedan juli 2004103 inlägg
#1

Hej,

Jag har en tabell som heter Namn, som inehåller "Berra Bertilsson"
Jag skulle vilja hat två kolumner FirstName "Berra" och LastName "Bertilsson"

Kan man genomföra detta direkt via SQL eller måste man scripta till något för att enklast lösa problemet?

// Berra

LarsGMedlem sedan dec. 200012 464 inlägg
#2
update t
set firstname = substring(namn from 1 for position(' ' in name) - 1,
 lastname = substring(namn from  position(' ' in name) + 1)
b3rraMedlem sedan juli 2004103 inlägg
#3

I rätt riktning men..

Jag är inte riktigt säker på om jag förstod din update-fras,
försökte läsa på lite mer om substrings men hittade inget som liknade ditt exempel. Tycker det verkas som om man måste ha tre värde

SUBSTRING ( expression, start, length )

Min tanke var ju att jag per automatik skulle kunna flytta ut datan i två kolumner. Mitt problem är nämligen att jag har ca 30 000 namn som behöver trandormeras för att passa in i en ny databasstruktur.

Du brukar ju ha stenkoll på allt som går med SQL.

// Berra

oskarsMedlem sedan nov. 20051 317 inlägg
#4

LarsG, menar du att man kan ta ut värden så här: "Börja vid tecken nummer 1 och sluta vid tecken nummer 10 och lägg in det i vald kolumn"?

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Eftersom du inte angav vilken DBMS du använder så gav jag ett svar som följer SQL-standarden. Ditt dokumentationsexempel tyder på SQL server i vilket fall man får använda char_index istället för position.

emissionMedlem sedan dec. 19996 721 inlägg
#6
update t
set firstname=LEFT(namn ,CHARINDEX(' ',namn)), lastname=RIGHT(namn ,LEN(namn )-CHARINDEX(' ',namn)) WHERE namn LIKE '% %'
b3rraMedlem sedan juli 2004103 inlägg
#7

Tack för hjälpen

Ni har gett mig ytterligare en dimension på SQL.

Det gällde en MSSQL 2005, det fungerade precis som jag önskade mig.

// Berra

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)