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

Sådan bestemmes feltværdien, som ikke kan konverteres til (decimal, float,int) i SQL Server

Almindelig ISNUMERIC er noget vrøvl

  • Tom streng, + , - og . er alle gyldige
  • Det samme er +. osv.
  • 1e-3 er gyldig for float, men ikke decimal (medmindre du CAST for at flyde derefter til decimal)

For en særlig kryptisk, men fejlsikker løsning skal du tilføje e0 eller .0e0 brug ISNUMERIC

SELECT
   ISNUMERIC(MyCOl + 'e0')   --decimal check,
   ISNUMERIC(MyCOl + '.0e0')  --integer check

SELECT
    ID, VALUE,
    CAST(
          CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END
          AS decimal(38, 10)
        ) AS ConvertedVALUE
FROM
    Mytable



  1. Datarisikobegrænsning via datamaskering

  2. Oracle:flere tabelopdateringer => ORA-01779:kan ikke ændre en kolonne, der er knyttet til en ikke-nøglebevaret tabel

  3. Sådan opretter du en serverløs GraphQL API til MySQL, Postgres og Aurora

  4. Der er opstået en JNI-fejl. Tjek venligst din installation og prøv igen i Eclipse x86 Windows 8.1