«t-sql» etiketlenmiş sorular

Transact-SQL (T-SQL), Microsoft SQL Server ve SAP'ın Sybase tarafından kullanılan bir SQL lehçesidir.


3
Mevcut değilse, koda göre yeni işlev oluşturma
Veritabanımdaki komut dosyasıyla yeni işlev oluşturmak istiyorum. Komut dosyası kodu aşağıdadır: IF Exists(Select * From sys.sysobjects A Where A.name =N'fn_myfunc' and xtype=N'FN') return; CREATE FUNCTION fn_myfunc () returns varchar(10) AS Begin ... End Ancak yukarıdaki komut dosyasını yürüttüğümde, SQL Server bir hata döndürür: 'CREATE FUNCTION' must be the first statement …

2
“SELECT POWER (10.0, 38.0);” neden aritmetik bir taşma hatası veriyor?
Taşma denetimi komut dosyamıIDENTITY hesaplamak DECIMALve NUMERIC IDENTITYsütunlar için güncelliyorum . Kontrolün bir parçası olarak, her IDENTITYsütun için veri türünün aralığının boyutunu hesaplıyorum ; Bunu, bu aralığın yüzde kaçının tükendiğini hesaplamak için kullanıyorum. Çünkü DECIMALve NUMERIC bu aralığın büyüklüğü2 * 10^p - 2p hassasiyetin nerede olduğu. Bir grup test tablosu …

2
SQL Server Ondalık (9, 0) ve INT
Müşterilerimizden biri DECIMAL(18,0)SQL Server 2008R2 veritabanındaki bazı veri sütunlarını kullanır . Sütunlar oldukça yavaş büyüdüğü için, yakın zamanda bir DECIMAL(5,0)miktar depolamayı yeniden kazanmak için veri türünü değiştirmeyi önerdi . MSDN kitaplığına göre , DECIMAL(5,0)veri tipinin depolama alanı , tıpkı veri tipi gibi DECIMAL(9,0), 5 bayttır. INT1 bayt daha küçüktür, ancak …

5
SQL Server'ın parantez gösterimini elle yazılmış kodda kullanmak mantıklı mı?
Kod üreteçleri [], hemen hemen her şey için yeni Microsoft parantez gösterimini ( ) kullanarak çıktı ürettiklerinde daha basit olma eğilimindedir . İlk gördüğümde, biraz yasaklanmış alıntı yapılan tanımlamanın bir reenkarnasyonu vay. Bildiğim kadarıyla Microsoft'un tescilli bir uzantısıdır (yani Oracle desteklemez). SQL Server'a baktığınızda, CREATE TABLE [dbo].[Table_2] ([col1] [int], [col2] …

1
Base64 Dizesini Yerel Olarak SQL Server'da Çöz
varcharSQL Server'da düz metin eşdeğerine kodunu çözmek istediğiniz base64 kodlu bir metin dizesi tutan bir sütun var SQL Server'ın bu tür şeyleri işlemek için herhangi bir yerel işlevi var mı ? Örnek bir base64 dizesi: cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA== Hangi kod çözme: role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764




1
Bir dizin biriktirmesini zorlama
Performans nedenleriyle kaçınılması gereken bir şey olduğunu biliyorum, ancak görünmediğinden emin olmak için bir demo olarak göründüğü bir durumu göstermeye çalışıyorum. Bununla birlikte, eksik bir dizin uyarısı ile sonlandırıyorum, ancak optimize edici geçici bir dizin oluşturmamayı seçiyor. Kullandığım sorgu SELECT z.a FROM dbo.t5 AS z WITH(INDEX(0)) WHERE EXISTS ( SELECT …

2
CREATE VIEW içinde WITH kullanarak SQL işlem yapın
WITH yan tümcelerini kullanarak VIEW oluşturmak istiyorum, ancak gerçekten doğru sözdizimi üzerinde herhangi bir başvuru bulamıyorum. Böyle bir şey istiyorum WITH TempTbl AS (SELECT ...) CREATE VIEW SomeView SELECT * FROM TempTbl Ve birden fazla WITH deyimi kullanmak için doğru sözdizimi nedir? MSDN'de yararlı bir şey yok :(
14 t-sql  view 

2
Bir CTE neden noktalı virgül ile başlamalıdır?
Sadece StackOverflow'daki bir mesaja bakıyordum, Aaron Bertrand'ın sayılar tablosu yerine CTE kullanmayı önerdiği, eldeki görevi yerine getirmenin zarif bir yolu. Benim sorum, CTE'nin ilk satırı neden noktalı virgülle başlıyor? ;WITH n AS (SELECT TOP (10000) n FROM (SELECT n = ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.all_objects AS s1 CROSS …
14 sql-server  t-sql  cte  syntax 


4
Bu WHERE yan tümcesinde% ne yapar?
Eğitim yapıyorum ve komut dosyalarından birinde aşağıdaki komut var: SELECT SUM(Col2) FROM clust_table WHERE Col1 % 3 = 1 Bu pasajın WHERE yan tümcesinde ne için olduğunu bilmek istiyorum: Col1 % 3 = 1 İnternette biraz araştırma yaptım ve bu komutla ilgili hiçbir referans bulamadım.
13 sql-server  t-sql 

3
LIKE karakter uzunluğu sınırlamasını aş
Bu LIKE karakter uzunluğu sınırlamasını burada okuyarak , LIKE yan tümcesinde ~ 4000 karakterden daha uzun bir metin gönderemiyorum. Belirli bir sorgu için sorgu planı önbelleğinden sorgu planı almaya çalışıyorum. SELECT * FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st where st.text like '%MY_QUERY_LONGER_THAN_4000_CHARS%' …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.