我使用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