我正在使用的數據集可以在here找到。如何修改此SQL SELECT語句以更改非數字值?
我正在使用SSIS將數據集上傳到MS SQL Server。
我上傳了一切文本,並試圖通過插入原始表中的值創建一個適當的數據類型的工作表。
CREATE TABLE [WRK_demographics]
(
[RowNumber] INT IDENTITY(1,1)
,[DBN] VARCHAR(10)
,[Name] VARCHAR(1000)
,[schoolyear] VARCHAR(100)
,[fl_percent] FLOAT
,[frl_percent] FLOAT
,[total_enrollment] INT
,[grade9] INT
,[grade10] INT
,[grade11] INT
,[grade12] INT
,[ell_num] INT
,[ell_percent] FLOAT
,[sped_num] INT
,[sped_percent] FLOAT
,[ctt_num] INT
,[selfcontained_num] INT
,[asian_num] INT
,[asian_per] FLOAT
,[black_num] INT
,[black_per] FLOAT
,[hispanic_num] INT
,[hispanic_per] FLOAT
,[white_num] INT
,[white_per] FLOAT
,[male_num] INT
,[male_per] FLOAT
,[female_num] INT
,[female_per] FLOAT
)
INSERT INTO [WRK_demographics]
(
[DBN]
,[Name]
,[schoolyear]
,[fl_percent]
,[frl_percent]
,[total_enrollment]
,[grade9]
,[grade10]
,[grade11]
,[grade12]
,[ell_num]
,[ell_percent]
,[sped_num]
,[sped_percent]
,[ctt_num]
,[selfcontained_num]
,[asian_num]
,[asian_per]
,[black_num]
,[black_per]
,[hispanic_num]
,[hispanic_per]
,[white_num]
,[white_per]
,[male_num]
,[male_per]
,[female_num]
,[female_per]
)
SELECT
[DBN]
,[Name]
,[schoolyear]
,[fl_percent]
,[frl_percent]
,[total_enrollment]
,[grade9]
,[grade10]
,[grade11]
,[grade12]
,[ell_num]
,[ell_percent]
,[sped_num]
,[sped_percent]
,[ctt_num]
,[selfcontained_num]
,[asian_num]
,[asian_per]
,[black_num]
,[black_per]
,[hispanic_num]
,[hispanic_per]
,[white_num]
,[white_per]
,[male_num]
,[male_per]
,[female_num]
,[female_per]
FROM [RAW_demographics_20170706]
但是,我遇到的問題是,沒有價值的單元格,有文本,而不是空單元格。所以,隱式轉換不能將數據轉換爲int/float
。有沒有辦法修改SELECT
語句將非數字單元格的值更新爲NULL
?如果我沒有那麼多列我將更新每一個在原始表這樣的插入工作表之前:
UPDATE [RAW_demographics_20170706]
SET [fl_percent] = NULL
WHERE ISNUMERIC([fl_percent]) <> 1
我不知道是否有采取更有效的路徑。
肯定。 try_cast適合這種情況。 – ViKiNG
那麼我需要每列的TRY_CAST語句嗎? – apkim221