webForumDet fria alternativet

Splitta kolumn till 2

Databaser & SQLur Databashanterare & SQL

6 svar · 387 visningar · startad av b3rra

Medlem sedan juli 2004103 inlägg
Frågan#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

Medlem 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)
Medlem 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

Medlem 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"?

Medlem 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.

Medlem 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 '% %'
Medlem 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

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