经过一段时间寻找答案后,我收到了很多问题,说要使用coalesce、concat()等,但我需要的是:
桌子:
create table nulos ( nome varchar(max))
alter table nulos add cidade varchar(max)
Run Code Online (Sandbox Code Playgroud)
价值观:
insert into nulos values ( 'rafael','são paulo'),('juliana',null)
Run Code Online (Sandbox Code Playgroud)
我需要将这个表中的值连接到一个插入中,如下所示:
select 'insert into nulos (nome,cidade) values ('+nome+','+cidade+')'
from nulos
Run Code Online (Sandbox Code Playgroud)
和选择的结果:
insert into nulos (nome,cidade) values (rafael,são paulo)
NULL
Run Code Online (Sandbox Code Playgroud)
如何在此串联中使用 NULL 值?每个答案都说用''or替换空值'_',但我需要的是:
insert into nulos (nome,cidade) values (rafael,são paulo)
insert into nulos (nome,cidade) values (Juliana,NULL)
Run Code Online (Sandbox Code Playgroud)
SET CONCAT_NULL_YIELDS_NULL on 不是一个选项,因为它只是删除 NULL 值,我需要插入它。
我在整个互联网上搜索堆栈溢出,但我找到的每个示例都只有一行,或者根本不起作用。
我有这张桌子:
TBL_RELATORIOS_TAMANHOS
table_catalog
table_name
column_name
data_type
character_maximum_length
numeric_precision
numeric_scale
Run Code Online (Sandbox Code Playgroud)
在它里面我有所有表中的所有列。我只需要找到那些具有不同精度、大小等的列。
使用 row_number 我得到了这个:
;WITH CTE AS
(
SELECT DISTINCT table_name 'Tabela',
column_name 'Coluna',
character_maximum_length as 'Tamanho',
numeric_precision as 'Precisao_Numerica',
numeric_scale 'Escala_Numerica'
FROM TBL_RELATORIO_TAMANHOS
)
SELECT *,
ROW_NUMBER() over ( partition by Tabela,Coluna order by Tabela,Coluna)
FROM CTE
ORDER BY 1,2
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以看到上面有一个的列2,所以这个是重复的(相同的列,不同的大小,精度等)。
| table_Name | Column_name | character_maximum_length | numeric_precision | numeric_scale | Row_number |
|-------------------------|------------------|--------------------------|-------------------|---------------|------------|
| ACOES | ID_BMF | 20 | NULL | NULL | 1 …Run Code Online (Sandbox Code Playgroud) 我有一个带有此配置的表:
现在,如果您查看 COLUMN_11,它是一个 varchar -1。
但据我所知,要将 PDF 文件插入表中,您需要文件流,并且列应该是 VARBINARY(max) 对吗?
那么,这是如何运作的呢?为什么 VARCHAR 列中有 PDF?
DocumentBody 是这样的:
显然,这样的数量有数百万。
所以是时候升级服务器了。我是这家公司的新员工,我们拥有 2008 年到 2014 年的 SQL Server。我真的认为将它们全部升级到 2014 年没有问题,因为它确实有很好的文档记录并且为社区所熟知。它的支持将于 2024 年 7 月 9 日结束,对吗?直接升级到 SQL Server 2016 的原因是什么?
我可以找到很多比较它们的网站,但这些都不是我们现在使用的功能。
我想直接升级到 2016 年,因为它的支持于 2026 年 7 月 14 日结束,但恐怕自 2008/2012 年以来它的查询有很多变化(例如已删除不推荐使用的功能)。
SQL Server 升级顾问是用于进行此类测试的可靠工具吗?
我过去曾将我们的环境(不同公司)从 SQL SERVER 2005/2008 升级到 2014,没有出现任何问题。
并且由于我们的数据库很少(就像每个服务器中不到 10 个),备份/恢复然后到新环境中更安全,对吗?我没有信心进行就地升级。
据我所知,我们不能将数据库直接从 SQL Server 2008 (100) 迁移到 sql server 2016,对吗?