Google Mobile Ads

Showing posts with label Transact-SQL. Show all posts
Showing posts with label Transact-SQL. Show all posts

Friday, July 22, 2016

SQL Server'da text split etme

Unutmamak için buraya ekledim. İnceledikten sonra konuyla ilgili buraya bir şeyler 
karalayacağım.
SELECT Source         = q.value('(/n[1])', 'varchar(10)'),
       RecordType     = q.value('(/n[2])', 'varchar(20)'),
       RecordNumber   = q.value('(/n[3])', 'int'),
       Status         = q.value('(/n[4])', 'varchar(5)')
FROM   (
         SELECT   q = Convert(xml,'<n>'+Replace(fieldName,'.','</n><n>')+'</n>')
         FROM     some_TABLE
       ) Q

'How do I split a string so I can access item x?

Wednesday, December 16, 2015

SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.

SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.

Seçenek 1:

SELECT ISNULL(COL.COLUMN_NAME,'') as Name
    ,ISNULL(COL.DATA_TYPE, '') as Type
    ,ISNULL(COL.NUMERIC_SCALE,0)  as Numeric_Scale  
    ,ISNULL(COL.NUMERIC_PRECISION, 0) as Precision  
    ,ISNULL(COL.CHARACTER_MAXIMUM_LENGTH, 0) as LenStr 
    ,CASE WHEN ISNULL(KEYCOLUSE.COLUMN_NAME,'0') = '0' THEN 0 ELSE 1 END  as isPrimaryKey
FROM INFORMATION_SCHEMA.COLUMNS as COL
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as KEYCOLUSE
ON KEYCOLUSE.TABLE_NAME = COL.TABLE_NAME
AND KEYCOLUSE.COLUMN_NAME = COL.COLUMN_NAME
WHERE COL.TABLE_NAME = 'TableName'
    AND COL.TABLE_SCHEMA = 'dbo'

ORDER BY COL.ORDINAL_POSITION


Seçenek 2:

SELECT C.name AS Name,
       T.name AS Type,
       ISNULL(C.scale, 0) AS Numeric_Scale,
       ISNULL(C.precision, 0) AS Precision,
       (CASE WHEN T.name LIKE '%char%' THEN ISNULL(C.max_length, 0) ELSE 0 END) AS LenStr,
       (CASE WHEN ISNULL(P.column_id,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM sys.columns AS C
LEFT JOIN (
             SELECT  ic.object_id, ic.column_id
             FROM    sys.indexes AS i INNER JOIN
             sys.index_columns AS ic ON  i.object_id = ic.object_id AND i.index_id = ic.index_id
             WHERE   i.is_primary_key = 1
) AS P ON C.object_id = P.object_id AND C.column_id = P.column_id
INNER JOIN sys.types T on T.system_type_id = C.system_type_id
WHERE OBJECT_NAME(C.object_id) = 'TableName'
ORDER BY C.column_id 


Seçenek 3:

SELECT C.id,C.name  AS Name,
             T.name AS Type,
             ISNULL(C.scale, 0) AS Numeric_Scale,
             ISNULL(C.prec, 0) AS Precision,
             (CASE WHEN LOWER(T.name) LIKE '%char%' THEN ISNULL(C.length, 0) ELSE 0 END) AS LenStr,
             (CASE WHEN ISNULL(P.colid,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM syscolumns AS C
LEFT JOIN (
                    SELECT  ic.id, ic.colid
                    FROM    sysindexkeys AS ic
) AS P ON C.id = P.id AND C.colid = P.colid
INNER JOIN systypes T on T.xtype = C.xtype AND T.status=0
WHERE OBJECT_NAME(C.id) = 'TableName'
ORDER BY C.colorder 

* How to find out column names of a table in SQL Server

Tuesday, December 2, 2014

"Cannot resolve collation conflict for DISTINCT operation." hatası

Database sunucusu ile veritabanınız farklı collationlara sahip ve "Cannot resolve collation conflict for DISTINCT operation." hatası alıyorsunuz. Öyleyse yapmanız gereken aşağıdaki gibi kodunuza  COLLATE "CollationAdi" eklemek.

SELECT DISTINCT (ISNULL(D.DemirbasCinsi,'') + '-' + ISNULL(V.ParaKodu,'')) COLLATE SQL_Latin1_General_CP1_CI_AS AS KolonAdi
FROM v_Demirbas AS D
INNER JOIN tbl_VUK AS V ON D.dmb_barkod  COLLATE SQL_Latin1_General_CP1_CI_AS =V.dmb_barkod  COLLATE SQL_Latin1_General_CP1_CI_AS

Monday, August 5, 2013

Türkiye Vergi Daireleri Listesi 2013 SQL

Metin dosyası olarak paylaşamadığım için kusura bakmayın.

CREATE TABLE [dbo].[t_VergiDaireleri](
[VDID] [int] NULL,
[PlakaKodu] [varchar](3) NULL,
[IlAdi] [nvarchar](50) NULL,
[IlceAdi] [nvarchar](100) NULL,
[VergiDairesiAdi] [nvarchar](255) NULL
) ON [PRIMARY]

INSERT [t_VergiDaireleri] ([VDID], [PlakaKodu], [IlAdi], [IlceAdi], [VergiDairesiAdi]) VALUES (1, N'01', N'ADANA', N'Merkez', N'5 Ocak Vergi Dairesi Müdürlüğü')
INSERT [t_VergiDaireleri] ([VDID], [PlakaKodu], [IlAdi], [IlceAdi], [VergiDairesiAdi]) VALUES (2, N'01', N'ADANA', N'Merkez', N'Yüreğir Vergi Dairesi Müdürlüğü')
INSERT [t_VergiDaireleri] ([VDID], [PlakaKodu], [IlAdi], [IlceAdi], [VergiDairesiAdi]) VALUES (3, N'01', N'ADANA', N'Merkez', N'Seyhan Vergi Dairesi Müdürlüğü')

Sunday, May 26, 2013

Transact-SQL: DATETIME tipindeki veriden saat bilgisi olmadan sadece DATE kısmını almak.

SELECT (CAST(YEAR([Date]) AS VARCHAR(4)) + '-' + RIGHT('00' + CAST(MONTH([Date]) AS VARCHAR(2)),2) + '-' + RIGHT('00' + CAST(DAY([Date]) AS VARCHAR(2)),2)) AS [strDate], * FROM appointment

SELECT CONVERT(DATE, CAST([Date] AS VARCHAR), 120) AS [strDate], * FROM appointment

Friday, May 24, 2013

Transact SQL : OUTPUT Clause


OUTPUT Clause
OUTPUT ile eklenen, silinen ve güncelleme yapılan tablolardaki hareketleri sadece sayısal değil değerleri ile birlikte gözlemleyebiliriz. 

MSDN açıklaması:
Returns information from, or expressions based on, each row affected by an INSERT, UPDATE, or DELETE statement. These results can be returned to the processing application for use in such things as confirmation messages, archiving, and other such application requirements. Alternatively, results can be inserted into a table or table variable.
USE tempdb
go

CREATE TABLE table1
(
    id INT,
    employee VARCHAR(32)
)
go

INSERT INTO table1 VALUES(1, 'Fred')
INSERT INTO table1 VALUES(2, 'Tom')
INSERT INTO table1 VALUES(3, 'Sally')
INSERT INTO table1 VALUES(4, 'Alice')
GO

VB.NET ile SQL Server'a Bağlanmak.

VB.NET ile SQL Server'a bağlanmak ve sorgu sonucunu datatable'a atmak.

'Imports System.Data.SqlClient
Dim con As New SqlClient.SqlConnection Dim strCon As String = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=SSPI;Connection Timeout=10;" 'NT Authentication 'For SQL Authentication Dim strCon As String = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;User ID=USERNAME;Password=PASSWORD;Connection Timeout=50;" Dim strCommand As String = "SELECT * FROM TABLE" Dim command As SqlCommand Dim da As SqlDataAdapter Dim dt As New DataTable Try con.ConnectionString = strCon command = New SqlCommand(strCommand, con) command.CommandTimeout = 3000
da = New SqlDataAdapter(command) da.Fill(dt) MsgBox(dt.Rows.Count.ToString())
'FOR INSERT, UPDATE, DELETE, USE BELOW
'Dim count as Integer = command.ExecuteNonQuery()
'count is the affected row number
Catch ex As Exception MessageBox.Show(ex.Message, "Error") Finally If con.State = ConnectionState.Open Then con.Close() End If End Try

SQL SERVER'da bir kolonun adını değiştirmek.

Herhangi bir kolonun adını değiştirmek için,
sp_RENAME 'TableName.[OldColumnName]' '[NewColumnName]''COLUMN'
Herhangi bir nesnenin adını değiştirmek için (table, sp vs.) :
sp_RENAME '[OldTableName]' '[NewTableName]'

Thursday, April 25, 2013

VB.NET Datatable'daki veriyi sıralamak.

Datatable'daki veriyi, SQL'deki Order By deyimini kullanıyormuş gibi sıralamak.

myDataTable.DefaultView.Sort = "columnName DESC"

ya da LinQ kullanarak

Dim linQuery = (From dRow In myDataTable.AsEnumerable() _
                Order By dRow.Item(columnName) Descending)
myDataTable = linQuery.CopyToDataTable()

Wednesday, April 17, 2013

SQL'de Split Fonksiyonu


SQL'de Split Fonksiyonu

ALTER FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20) = ' ')
RETURNS @Strings TABLE
(
  Split VarChar(1000)
)
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
  BEGIN 
    SET @index = CHARINDEX(@delimiter , @text) 
    IF (@index = 0) AND (LEN(@text) > 0) 
      BEGIN  
        INSERT INTO @Strings VALUES (@text)
          BREAK 

SQL'de bir tabloya index ekleme ve bu eklenen index'e göre tabloyu rebuild etme


Bir tabloya index ekleme ve bu eklenen index'e göre tabloyu rebuild etme

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[t_Products]') AND name = N'x_Products_venderno')
DROP INDEX [x_Products_venderno] ON [dbo].[t_Products] WITH ( ONLINE = OFF )
GO

CREATE NONCLUSTERED INDEX [x_Products_venderno] ON [dbo].[t_Products] 
(
[ds_id] ASC,
[vender_no] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO


ALTER INDEX x_Products_venderno ON [dbo].[t_Products]
REBUILD;

Wednesday, March 20, 2013

SQL'de herhangi bir tarih değerine ait Saat, Dakika ve Saniye bilgilerini almak

SQL'de herhangi bir tarih değerine ait Saat, Dakika ve Saniye bilgilerini almak

SELECT DATEPART(hh, GETDATE());
SELECT DATEPART(MI, GETDATE());
SELECT DATEPART(S, GETDATE());



Extracting hour, minute and second from a datetime value in SQL.

Thursday, June 21, 2012

SQL Server'da Bir Tabloya Ait Kolon İsimlerini Öğrenmek

SELECT name
FROM   syscolumns
WHERE  id = (SELECT id FROM sysobjects WHERE name='TableName')


* How to find out column names of a table in SQL Server

Wednesday, June 20, 2012

SQL Server'da Bir Tabloya Ait Kolon Veri Tiplerini Öğrenmek

DECLARE @Table_Name NVARCHAR(100)
SET @Table_Name = 'mytablename'


SELECT object_name(c.id)    AS table_name, 
c.name               AS column_name,
t.name              AS data_type
FROM syscolumns AS c 
INNER JOIN systypes   AS t  ON c.xtype = t.xtype
WHERE c.id = object_id( @Table_Name )


* How to find out column data types of a table in SQL Server

Tuesday, June 12, 2012

SQL'de bir tablonun tablo şemasını (TABLE_SCHEMA) değiştirmek

Bazen aynı veritabanı içinde, dbo ya da farklı isimdeki şemalara ait tablolar ile karşılaşabiliriz. ve günü geldiğinde bu tabloların hepsinin aynı tablo şeması altında toplanması gibi bir istek gelebilir.

Bu durumda yapmamız gereken:

tableschema altında oluşturulmuş mytable tablosunu, aşağıdaki kodla dbo şeması altına çekebiliriz.

ALTER SCHEMA dbo TRANSFER tableschema.mytable



Sunday, January 29, 2012

SQL'de ORDER BY üzerinde CASE WHEN ile özel sıralamalar yapmak

ORDER BY kullanırken, bazen ASC(ascending order) ve DESC(descending order) gibi mevcut sıralama yöntemlerinin yetersiz kaldığı durumlar olabilir. Sıralama işlemi esnasında, mevcut alfabetik sıralamanın yanısıra istisnai özel durumlarında kullanılması gerekebilir. Örneğin, illeri A'dan Z' ye sıralarken, bizden İstanbul, Ankara ve İzmir'in listenin en üstünde olması istenebilir. Bu durumda kullanmamız gereken yöntem, ORDER BY CASE'dir.


SELECT   IL_ADI
FROM     ILLER_TABLOSU
ORDER BY CASE IL_ADI
            WHEN 'İSTANBUL' THEN 1
            WHEN 'ANKARA'   THEN 2
            WHEN 'İZMİR'    THEN 3
            ELSE  4
         END


LinkWithin

Related Posts Plugin for WordPress, Blogger...