AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-9494

KutuluMike's questions

Martin Hope
KutuluMike
Asked: 2014-08-30 10:09:32 +0800 CST

Existe alguma diferença entre NUMERIC e DECIMAL?

  • 48

Eu sei que os tipos de dados NUMERIC e DECIMAL no SQL Server funcionam da mesma forma: a sintaxe para criá-los é a mesma, os intervalos de valores que você pode armazenar neles são os mesmos etc.

No entanto, a documentação do MSDN descreve a relação entre os dois assim:

numeric é funcionalmente equivalente a decimal.

Normalmente, quando vejo o qualificador " funcionalmente equivalente", significa que as duas coisas não são exatamente iguais, mas que são dois tipos diferentes que são indistinguíveis do lado de fora .

Essa implicação é verdadeira? Existem diferenças entre NUMERIC e DECIMAL que por acaso se comportam da mesma forma para um observador externo? Ou eles são realmente equivalentes, por exemplo, NUMERIC é apenas um sinônimo herdado para DECIMAL?

sql-server
  • 2 respostas
  • 59968 Views
Martin Hope
KutuluMike
Asked: 2014-07-16 07:18:46 +0800 CST

Operação de diferença simétrica no Transact-SQL?

  • 12

Sempre soube do UNIONoperador no SQL, mas só recentemente descobri que havia outros operadores de conjunto INTERSECTe EXCEPT. Não consegui encontrar um operador que faça o quarto grande operador de conjunto, a diferença simétrica (por exemplo, o oposto de INTERSECT.)

Parece que posso obter a saída desejada usando algo como

SELECT Field FROM A UNION SELECT Field FROM B 
EXCEPT
SELECT Field FROM A INTERSECT SELECT Field FROM B

(supondo que eu tenha a precedência correta), ou fazendo um anti-full-join:

SELECT A.Field, B.Field
FROM A
FULL JOIN B ON B.Id = A.Id
WHERE B.Id IS NULL OR A.Id IS NULL

Mas ambos parecem consultas bastante intensivas, especialmente em comparação com as outras três operações básicas de conjunto. Existe uma operação de diferença simétrica no SQL e simplesmente não consigo encontrá-la na documentação? Ou existe uma maneira "canônica" de implementá-lo no T-SQL?

sql-server t-sql
  • 2 respostas
  • 4227 Views
Martin Hope
KutuluMike
Asked: 2013-08-09 09:06:06 +0800 CST

A coluna de dados binários mostrada no SQL Profiler contém informações úteis?

  • 6

Muitos dos eventos que o SQL Profiler captura incluem uma coluna de dados binários. A documentação para essas classes de eventos apenas repete o fato de que essa coluna contém "Valor binário dependente da classe de eventos capturada no rastreamento".

Estou particularmente interessado nos eventos RPC:Startinge ; RPC:CompletedPercebo que os dados binários de cada evento aparecem iguais sempre que a mesma consulta é executada, embora os eventos Inicial e Concluído tenham dados binários diferentes . Mas outros eventos também exibem informações aqui que eu estaria interessado em decodificar. Isso pressupõe, é claro, que os dados sejam relevantes ou significativos.

O conteúdo desses campos está documentado em algum lugar e é significativo para um desenvolvedor/administrador?

sql-server profiler
  • 1 respostas
  • 4094 Views
Martin Hope
KutuluMike
Asked: 2012-12-18 13:17:56 +0800 CST

MERGE um subconjunto da tabela de destino

  • 75

Estou tentando usar uma MERGEinstrução para inserir ou excluir linhas de uma tabela, mas só quero agir em um subconjunto dessas linhas. A documentação para MERGEtem um aviso muito forte:

É importante especificar apenas as colunas da tabela de destino que são usadas para fins de correspondência. Ou seja, especifique as colunas da tabela de destino que são comparadas com a coluna correspondente da tabela de origem. Não tente melhorar o desempenho da consulta filtrando linhas na tabela de destino na cláusula ON, como especificando AND NOT target_table.column_x = value. Fazer isso pode retornar resultados inesperados e incorretos.

mas é exatamente isso que parece que tenho que fazer para fazer meu MERGEtrabalho.

Os dados que tenho são uma tabela padrão de junção de muitos para muitos de itens para categorias (por exemplo, quais itens estão incluídos em quais categorias) assim:

CategoryId   ItemId
==========   ======
1            1
1            2
1            3
2            1
2            3
3            5
3            6
4            5

O que preciso fazer é substituir efetivamente todas as linhas de uma categoria específica por uma nova lista de itens. Minha tentativa inicial de fazer isso se parece com isso:

MERGE INTO CategoryItem AS TARGET
USING (
  SELECT ItemId FROM SomeExternalDataSource WHERE CategoryId = 2
) AS SOURCE
ON SOURCE.ItemId = TARGET.ItemId AND TARGET.CategoryId = 2
WHEN NOT MATCHED BY TARGET THEN
    INSERT ( CategoryId, ItemId )
    VALUES ( 2, ItemId )
WHEN NOT MATCHED BY SOURCE AND TARGET.CategoryId = 2 THEN
    DELETE ;

Isso parece estar funcionando em meus testes, mas estou fazendo exatamente o que o MSDN me avisa explicitamente para não fazer. Isso me deixa preocupado com a possibilidade de ter problemas inesperados mais tarde, mas não consigo ver nenhuma outra maneira de fazer minhas MERGElinhas afetar apenas com o valor de campo específico ( CategoryId = 2) e ignorar linhas de outras categorias.

Existe uma maneira "mais correta" de alcançar esse mesmo resultado? E quais são os "resultados inesperados ou incorretos" sobre os quais o MSDN está me alertando?

sql-server t-sql
  • 1 respostas
  • 89524 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve