[MSSQL] SELECT INTO met specifiek type veld

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Beetje rare topictitel misschien, maar ik zal proberen het duidelijk te maken. Ik heb een query die bestaat uit een SELECT INTO constructie. Bij de geselecteerde velden velden zit ook een berekend veld, die ik initieel op 0 zet. Het probleem is dat MSSQL daaruit impliciet concludeert dat dat veld dus een tinyint is, terwijl ik liever een int heb. Laat ik het eens visualiseren:
SQL:
1
SELECT veldje1, veldje2, 0 AS veldje3 INTO #Temp FROM tabelletje

Zo krijg ik een tijdelijke tabel met veldje1, veldje2 en veldje3. Veldje3 is dan van het type tinyint, maar die moet dus int worden. Dus dacht ik:
SQL:
1
SELECT veldje1, veldje2, CONVERT(int, 0) AS veldje3 INTO #Temp FROM tabelletje

Maar dan blijft het dus een tinyint... Dus als er een manier is om van veldje3 toch een 'grotere' integer te maken, weet iemand dan hoe dat moet? Wat ik liever niet doe, is de tijdelijke tabel handmatig aanmaken met een CREATE TABLE of initieel 2147483647 erin zetten. Of streep ik dan de enige twee oplossingen weg? :)

btw, waarom is "#temp FROM tabelletje" zwart met een rode streep eronder?

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Nou, ik kan me nog een ALTER TABLE statement voorstellen maar verder denk ik niet dat het mogelijk is.

En omdat ik van mening ben dat in 99% van de gevallen een #temp tabel niet nodig is: weet je zeker dat je een temp tabel nodig bent?

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Als ik een temptable gebruik doe ik wel altijd eerst create table. Ik denk dat dat dan toch de beste oplossing is...

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE #TempItems
    (
        PasswordHash varchar(200),
        AccountStatus int,
        LastLogin datetime
    )
    -- Insert the rows from the result query into the temp. table
INSERT INTO #TempItems 
    (
        PasswordHash,
        AccountStatus,
        LastLogin
    )
SELECT
        PasswordHash,
        AccountStatus,
        LastLogin
    FROM
        Member

[ Voor 11% gewijzigd door Verwijderd op 24-11-2005 10:31 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Ja, dan toch maar met een CREATE TABLE. Een ALTER TABLE deed vaag (denkt ie verderop dat het toegevoegde veld niet bestaat), dus dan maar zo. In elk geval bedankt voor het meedenken :)

日本!🎌


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

En als je dan toch een CREATE TABLE doet, waarom gebruik je dan geen tablevar? Die heeft veel voordelen (ja, ook enkele nadelen) t.o.v. temp tables. Goede gewoonte m.i. om tablevars te gebruiken.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

CAST - function misschien ?
Pagina: 1