sql >> Databáze >  >> RDS >> Sqlserver

Chyba při převodu datového typu varchar

OK. Konečně jsem vytvořil pohled, který funguje:

SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM         dbo.MyTable
WHERE     (MyCol NOT LIKE '%[^0-9]%')

Díky AdaTheDev a CodeByMoonlight . Použil jsem vaše dvě odpovědi, abych se k tomu dostal. (Samozřejmě i díky ostatním odpovědím)

Nyní, když se spojím s jinými sloupci bigint nebo udělám něco jako 'SELECT * FROM MyView, kde mycol=1', vrátí správný výsledek bez chyb. Domnívám se, že CAST v dotazu sám o sobě způsobuje, že optimalizátor dotazů se nepodívá na původní tabulku, jak řekl Christian Hayter, že to možná probíhá s ostatními pohledy



  1. Chyba převodu dat hromadného načtení (neshoda typu nebo neplatný znak pro zadanou kódovou stránku) pro řádek 1, sloupec 4 (rok)

  2. Jak exportovat databázi mysql do jiného počítače?

  3. Jaký algoritmus používá funkce ORA_HASH?

  4. Jak vybrat záznamy s duplicitním pouze jedním polem a všemi ostatními hodnotami pole?