sql >> Database teknologi >  >> RDS >> Sqlserver

Flet to SQL-scripts, hvis betingelse i Select-forespørgsel

Jeg ville springe hvor-erklæringen over og oprette en kolonne for det numeriske postnummer og en for den anden. Sådan:

SELECT [Fm].[Id], [Sdp].[FirstName], [Sdp].[LastName], [Sdp].[SSN], [Sdp].[StoreName], ( CASE WHEN ISNUMERIC([Sdp].[PostalCode])=1 THEN 0 ELSE NULL END ) AS NumericPostalCode, ( CASE WHEN ISNUMERIC([Sdp].[PostalCode])=0 THEN [Sdp].[PostalCode] ELSE NULL END ) AS PostalCode, [Fc].[Id], [Sdp].[Address] FROM [SRM].[SiteMembers].[DProfile] AS [Sdp] INNER JOIN [SRM].[SiteMembers].[Member] AS [Sm] ON [Sdp].[Member_Id] = [Sm].[Id] INNER JOIN [FRM].[Members].[Member] AS [Fm] ON [Sm].[UserId] = [Fm].[UserId] INNER JOIN [SRM].[General].[City] AS [Sc] ON [Sdp].[City_Id]=[Sc].[Id] INNER JOIN [FRM].[General].[City] AS [Fc] ON [Fc].[Title]=[Sc].[Title] COLLATE SQL_Latin1_General_CP1_CI_AS´

Rediger 1

Jeg ved, at dette vil resultere i to kolonner. Men du kan ikke være nødt til at indtaste data i én kolonne. Men jeg tror, ​​at du også kan gøre det sådan her.

SELECT [Fm].[Id], [Sdp].[FirstName], [Sdp].[LastName], [Sdp].[SSN], [Sdp].[StoreName], ( CASE WHEN ISNUMERIC([Sdp].[PostalCode])=0 THEN [Sdp].[PostalCode] ELSE '0' END ) AS PostalCode, [Fc].[Id], [Sdp].[Address]

Dette vil fungere, fordi den numeriske er '0' som en varchar.

Rediger 2

Du kan også gøre det sådan her:

SELECT CAST('asdasd' AS sql_variant)
UNION ALL
SELECT CAST(0 AS sql_variant)
 

Men dette er en beskidt løsning på dette problem. sql_variant er et databaseobjekt. Så min konklusion er:Brug til kolonne hvis du hvad skal have forskellige datatyper. Hvis værdierne kan være af samme datatype, skal du bruge den samme kolonne. Brug ikke sql_variant til at løse problemer som dette. Du betaler en høj pris for at vedligeholde koden.

Håber dette hjælper.



  1. Opgradering af Slony-I 2.0.x til seneste version 2.1.x

  2. TinyMCE UTF-8 gemmer til MySQL-database

  3. Fuldtekstsøgning installeret eller ej

  4. PHP rekursiv menu i HTML listestruktur