我使用SQL Server 2012中,我有2個表,定義如下使用默認值
CREATE TABLE t1 (id INT PRIMARY KEY, value NVARCHAR(10))
CREATE TABLE t2 (id INT PRIMARY KEY, value BIT DEFAULT 1)
ALTER TABLE t2 WITH CHECK ADD CONSTRAINT FK FOREIGN KEY(id) REFERENCES t1 (id)
我插入當前例如下列:
INSERT INTO t1 VALUES (1, 'a')
INSERT INTO t1 VALUES (2, 'b')
INSERT INTO t1 VALUES (3, 'c')
INSERT INTO t2 VALUES (1, 1)
INSERT INTO t2 VALUES (3, 0)
我運行此查詢和它的作品
SELECT
t1.*, ISNULL(t2.value, 1)
FROM
t1
LEFT JOIN t2 ON t1.id = t2.id
有什麼辦法來取代1
在這部分ISNULL(t2.value, 1)
與我在表t2
表value
列中定義的默認值?
下面是我用這個例子創建的sqlfiddle:SQLFIDDLE DEMO
更新1:
我不能使用SQL Server: Find out default value of a column with a query因爲它返回((1))
,我不能投((1))
到BIT
。 有什麼辦法解決這個問題嗎?
你的意思是你想更換1't1.value'? – Siyual
不,我不知道。 't2'中的'value'列有一個默認值(在本例中爲'1')。我想在存儲過程中使用該默認值而不是硬編碼1,因爲如果將默認值更改爲0,我不想更改每個存儲過程。 – CrApHeR
我不明白這個查詢 - 那麼你想採用't2.value',除非它是'NULL',並且如果它是'NULL',則採取...'t2.value'?這沒有任何意義。 – Siyual