SQL FullText Search

20 Oca 2018 In: SQL
DECLARE
    @search_string  VARCHAR(100),
    @TABLE_NAME     SYSNAME,
    @table_id       INT,
    @column_name    SYSNAME,
    @sql_string     VARCHAR(2000)
 
SET @search_string = 'deneme12345'
 
DECLARE tables_cur CURSOR FOR SELECT name, object_id FROM sys.objects WHERE TYPE = 'U'
OPEN tables_cur
FETCH NEXT FROM tables_cur INTO @TABLE_NAME, @table_id
 
WHILE (@@FETCH_STATUS = 0)
BEGIN
    DECLARE columns_cur CURSOR FOR SELECT name FROM sys.columns WHERE object_id = @table_id AND system_type_id IN (167, 175, 231, 239)
    OPEN columns_cur
 
    FETCH NEXT FROM columns_cur INTO @column_name
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
        SET @sql_string = 'IF EXISTS (SELECT * FROM ' + @TABLE_NAME + ' WHERE [' + @column_name + '] LIKE ''%' + @search_string + '%'') PRINT ''' + @TABLE_NAME + ', ' + @column_name + ''''
 
        EXECUTE(@sql_string)
 
        FETCH NEXT FROM columns_cur INTO @column_name
    END
 
    CLOSE columns_cur
    DEALLOCATE columns_cur
 
    FETCH NEXT FROM tables_cur INTO @TABLE_NAME, @table_id
END
 
CLOSE tables_cur
DEALLOCATE tables_cur
 
 
 
 
 
-------------------------
 
Find a specified string in a database with all tables :
 
 
CREATE PROC SearchAllTables ( @SearchStr nvarchar(100) ) AS BEGIN

DECLARE @Results TABLE(ColumnName nvarchar(370), ColumnValue nvarchar(3630))

SET NOCOUNT ON

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

WHILE @TableName IS NOT NULL
BEGIN
    SET @ColumnName = ''
    SET @TableName = 
    (
        SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
        FROM    INFORMATION_SCHEMA.TABLES
        WHERE       TABLE_TYPE = 'BASE TABLE'
            AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
            AND OBJECTPROPERTY(
                    OBJECT_ID(
                        QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                         ), 'IsMSShipped'
                           ) = 0
    )

    WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
    BEGIN
        SET @ColumnName =
        (
            SELECT MIN(QUOTENAME(COLUMN_NAME))
            FROM    INFORMATION_SCHEMA.COLUMNS
            WHERE       TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                AND TABLE_NAME  = PARSENAME(@TableName, 1)
                AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
                AND QUOTENAME(COLUMN_NAME) > @ColumnName
        )

        IF @ColumnName IS NOT NULL
        BEGIN
            INSERT INTO @Results
            EXEC
            (
                'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                FROM ' + @TableName + ' (NOLOCK) ' +
                ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
            )
        END
    END 
END

SELECT ColumnName, ColumnValue FROM @Results
END 
 
 
 
------------------- 
 
 exec SearchAllTables 'deneme12345';
 
------------------- 

SQL FarkBul

7 Nis 2016 In: SQL

/****** Object:  UserDefinedFunction [dbo].[FarkiBul]    Script Date: 7.04.2016 21:48:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
ALTER FUNCTION [dbo].[FarkiBul](@t datetime)

RETURNS nvarchar(100)
AS
BEGIN
DECLARE @s INT
DECLARE @m VARCHAR(35)

SET @s=DATEDIFF(s,getdate(),@t);

IF @s>= 31536000
BEGIN
return CONVERT(nvarchar, @s/31536000) + ' Yıl Sonra';
END;

IF @s>= 2592000
BEGIN
return CONVERT(nvarchar, @s/2592000) +' Ay Sonra';
END;

IF @s>= 604800
BEGIN
return CONVERT(nvarchar, @s/604800) + ' Hafta Sonra';
END;

IF @s>=86400 
BEGIN
return CONVERT(nvarchar, @s/86400) + ' Gün Sonra';
END;

IF @s>=3600 
BEGIN
return CONVERT(nvarchar, @s/3600) + ' Saat Sonra';
END;

if @s>=60
BEGIN
return CONVERT(nvarchar, @s/60) + ' Dakika Sonra';
END;

if @s<=60
BEGIN
set @m= ' Şuan';
END;

return @m;
END

SQL e dair bir kaç ip ucu

14 Mar 2012 In: ipucu, SQL

CONVERT(varchar(20), CAST(TBLMCEK.TUTAR AS money), 1) AS Tutar  //12,340.00

.Text.Replace(",", "").Replace(".", ",") 

 

 

INSER INTO Tablo() OUTPUT INSERTED.SIP_ID VALUES() 

 

CASE
WHEN TBLMCEK.SC_YERI = 'P' THEN 'Portföy'
WHEN TBLMCEK.SC_YERI = 'T' THEN 'Tahsil'
WHEN TBLMCEK.SC_YERI = 'E' THEN 'Teminat'
WHEN TBLMCEK.SC_YERI = 'C' THEN 'Ciro'
ELSE '-'
END AS Yeri, 

 

 SQL Serverda parasal tutarlar nasıl 99560,50 şeklinden  “99.560,50 TL” şekline kolayca formatlanabilir :

 

SELECT CARI_KOD, CARI_ISIM

CONVERT(VARCHAR,cast(SUM(BORC) AS MONEY),-1) + ‘ TL’     AS  TopBorc,

FROM CARI_HESAP_DOKUMU

 

–Bir önceki ayın son günü

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) AS ONCEKI_AYIN_SONGUNU

 

–Şu anki ayın son günü

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)) AS SU_ANKI_AYIN_SONGUNU

 

–Sonraki ayın son günü bul

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0)) AS SONRAKI_AYIN_SONGUNU

 

//ayın son günü bulma

//CONVERT(….,102) ile tarihi sade hale dönüştür (2011.03.25 gibi) yoksa 2011.03.25 23:59:59 olur

DECLARE @TARIH1 DATETIME
SET @TARIH1 = ’8/18/2011′
SELECT  CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@TARIH1)+1,0)),102) AS AYIN_SON_GUNU

//ayın ilk gününü bulma

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@TARIH1)-1),@TARIH1),102) AS AYIN_ILK_GUNU

 

//yılın ilk gününü bulma

SELECT CONVERT(VARCHAR,dateadd(year, datediff(year, ”, @TARIH1),”),102) AS YILIN_ILK_GUNU

 

//yılın son gününü

SELECT CONVERT(VARCHAR,dateadd(dd, 364, DATEADD(year, datediff(year, ”,@TARIH1),”)),102) AS YILIN_SON_GUNU

 

//sadece tarih bilgisi lazım olur :

SELECT CONVERT( VARCHAR, DATEADD(DAY,-0,GETDATE()) ,102) AS TARIH

 

//SQL CASE kullanımı

SELECT hg.*,

CASE
WHEN MDoviz = 'EUR' THEN (Convert(decimal(18,4),(SELECT TOP 1 kr.EURA FROM Kurlar kr WHERE KDate >= HDate)))
WHEN MDoviz = 'USD' THEN (Convert(decimal(18,4),(SELECT TOP 1 kr.USDA FROM Kurlar kr WHERE KDate >= HDate)))
ELSE 1
END AS Kur,

 

CASE
WHEN MDoviz = 'EUR' THEN (Convert(decimal(18,2),(SELECT TOP 1 kr.EURA FROM Kurlar kr WHERE KDate >= HDate)*MFiyat))
WHEN MDoviz = 'USD' THEN (Convert(decimal(18,2),(SELECT TOP 1 kr.USDA FROM Kurlar kr WHERE KDate >= HDate)*MFiyat))
ELSE 1*MFiyat
END AS TutarTL,

(SELECT u.Adi FROM Ulkeler u WHERE u.ULK_ID=hg.VARIS_ID) as Varis  

FROM HizliGirisler hg Where YIYD=1 

  

----- Bir tabloda tüm kullanıcıların tüm girişleri tutuluyor(dt,dv,usern), ama ben bir kullanıcının en son giriş yaptıgı cihaz nosunu almak istiyorum ----

 

WITH cte AS (SELECT *, CIH_ID as nCIH_ID FROM cihazlar)

SELECT a.CIH_ID, a.dt, a.dv, a.usern 

FROM cte a LEFT JOIN cte b

  ON a.usern=b.usern

 AND (a.nCIH_ID < b.nCIH_ID OR 

     (a.nCIH_ID = b.nCIH_ID AND a.dv<b.dv))

WHERE b.CIH_ID IS NULL and len(a.dv)>5

order by usern,dt,dv 

 

 

Windows Server 2008 Foundation sürümü üzerine SQL Server 2008 Express Edition kurarken aşagıdaki hatayı alırsanız :

Rule "Performance counter registry hive consistency" failed.

Çözümü Registry de ve oldukca basit :

Türkçe işletim sisteminde 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\01F

İngilizce de ise 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009

Klasörüne gidin ve
"Counter" ve "Help" anahtarlarını (Çok Dizeli Deger) açın ve içindeki verileri var olan kalsörden kopyalayıp yapıştırın. 

Şimdi kurulumu tamamlaya bilirsiniz. 



 

Uzun süredir kullanmadıgınız ve üzerinden mixed modda kurmuş oldugunuz bir SQL Server olan sunucunuz var ise, şifreyi hatırlayamamanız normal. Birde size yol gösterecek bir web.config dosyanız felan yok ise, şifreyi sıfırlayıp bu sıkıntıdan kurtula bilirsiniz.

 

1. Networkunuz daki SQL sunucuları listelemek içim

     osql -L

2. Gelen listeden adını ögrenip 

     osql -S <server-name> -E

eger local de ise SQL, aşagıdakide görür işinizi

     osql -S . -E

3. Yeni şifreyi atamak için

     sp_password NULL,'yeni_sifre','sa'
     go
 

 

Yeni SA şifreniz ile SQL server management veya Visual Studio ile baglanabilirsiniz artık. Hayırlı ugurlu olsun...

Ben Kimim ?

Celiker BahceciMerhabalar, ben Çeliker BAHÇECİ. 2004 den beri özel sektörde bilgisayar mühendisligi ve egitmenlik yapıyorum. Yine aynı yılın Ekim ayından beri sitemde .Net ile programlama ve hayat görüşüm ile ilgili makalelerimi yayınlıyorum. Blogum dışında Yazgelistir.com, mobilnedir.com gibi ineta kapsamındaki bir çok siteye Microsoft teknolojileri ile ilgili yazılar yazmaktayım.
Bu site ile sizinde hayatınızı anlamlandırmanızda bir parça katkımın olması dilegiyle...