UPDATE YourTable
SET YourColumn = Replace(YourColumn ,'oldText','newText')
WHERE YourCriteria
Showing posts with label SQL. Show all posts
Showing posts with label SQL. Show all posts
Wednesday, March 10, 2021
SQL, Select, Replace
Monday, October 12, 2020
SQL หาผลรวม แต่ละเดือน
SELECT DATEPART(Year ,DateCol) As 'Year'
,DATEPART(Month ,DateCol) As 'MTH'
,Round(SUM(YourDataColumn),2) As 'kWh'
FROM YourTable
WHERE ...YourCriteria
GROUP BY DATEPART(Year ,DateCol) , DATEPART(Month ,DateCol)
Friday, March 13, 2020
SQL Server, ข้อแตกต่างระหว่าง COALESCE() กับ ISNULL(), เปรียบเทียบ COALESCE() กับ CASE()
COALESCE คือคำสั่งที่ใช้ในการแปลงค่าจาก NULL เป็น ค่าที่ต้องการ
Syntax : COALESCE(expression1,expression2,…n,VALUE)
** VALUE คือค่าที่ต้องการเปลี่ยนเมื่อ expression เป็น NULL เช่น ต้องการให้แปลง NULL เป็น 10 ก็ใส่ VALUE เป็น 10 **
ตัวอย่างที่ 1
COALESCE(NULL,NULL,’show value’) => ผล : show value
COALESCE(1,2,’show value’) => ผล : 1
COALESCE(1,NULL,’show value’) => ผล : 1
COALESCE(NULL,2,’show value’) => ผล : 2
Syntax : ISNULL ( check_expression , replacement_value )
ตัวอย่างที่ 2
where isnull(name,”) <> ”
มีค่าเท่ากับ where name is not null and name <> ”
มีค่าเท่ากับ where name <> ”
ตัวอย่างที่ 3
SELECT ISNULL(Weight, 0) FROM tb_DimProduct
ข้อแตกต่างระหว่าง COALESCE() กับ NULL()
1. เมื่อเจอค่า NULL : ISNULL จะแปลงค่าเป็น int แต่ COALESCE เราจะต้องกำหนด data type
2. ISNULL สามารถใช้ได้กับแค่ 2 parameters เท่านั้น ในขณะที่ COALESCE สามารถระบุ parameters ได้มากกว่า 2
เปรียบเทียบ COALESCE() กับ CASE()
— CASE expression:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
ELSE expressionN
— COALESCE expression:
SELECT COALESCE(expression1,expression2,expressionN)
Syntax : COALESCE(expression1,expression2,…n,VALUE)
** VALUE คือค่าที่ต้องการเปลี่ยนเมื่อ expression เป็น NULL เช่น ต้องการให้แปลง NULL เป็น 10 ก็ใส่ VALUE เป็น 10 **
ตัวอย่างที่ 1
COALESCE(NULL,NULL,’show value’) => ผล : show value
COALESCE(1,2,’show value’) => ผล : 1
COALESCE(1,NULL,’show value’) => ผล : 1
COALESCE(NULL,2,’show value’) => ผล : 2
Syntax : ISNULL ( check_expression , replacement_value )
ตัวอย่างที่ 2
where isnull(name,”) <> ”
มีค่าเท่ากับ where name is not null and name <> ”
มีค่าเท่ากับ where name <> ”
ตัวอย่างที่ 3
SELECT ISNULL(Weight, 0) FROM tb_DimProduct
ข้อแตกต่างระหว่าง COALESCE() กับ NULL()
1. เมื่อเจอค่า NULL : ISNULL จะแปลงค่าเป็น int แต่ COALESCE เราจะต้องกำหนด data type
2. ISNULL สามารถใช้ได้กับแค่ 2 parameters เท่านั้น ในขณะที่ COALESCE สามารถระบุ parameters ได้มากกว่า 2
เปรียบเทียบ COALESCE() กับ CASE()
— CASE expression:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
ELSE expressionN
— COALESCE expression:
SELECT COALESCE(expression1,expression2,expressionN)
Monday, December 2, 2019
Returning TOP N Records
Returning only the first N records in a SQL query differs quite a bit between database platforms. Here's some samples
Wednesday, February 7, 2018
SQL Command, Select, Date
DECLARE @D1 DateTime
DECLARE @D2 DateTime
SET @D1 = '2018-01-01'
SET @D2 = '2018-01-04'
แบบที่ 1 ที่เคยใช้
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn>= @D1 AND dateColumn <= @D2
แบบที่ 2 ใช้ BETWEEN
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN @D1 AND @D2
แบบที่ 3 กรณีต้องการเลือกตั้งแต่วันที่ 1 ของเดือนนั้น จนถึงวันที่เลือก และต้องการลดจำนวนพารามิเตอร์ลงจาก 2 ตัวเหลือ 1 ตัว
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN DATEADD(D,-(Day(@D2)-1),@D2) AND @D2
DECLARE @D2 DateTime
SET @D1 = '2018-01-01'
SET @D2 = '2018-01-04'
แบบที่ 1 ที่เคยใช้
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn>= @D1 AND dateColumn <= @D2
แบบที่ 2 ใช้ BETWEEN
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN @D1 AND @D2
แบบที่ 3 กรณีต้องการเลือกตั้งแต่วันที่ 1 ของเดือนนั้น จนถึงวันที่เลือก และต้องการลดจำนวนพารามิเตอร์ลงจาก 2 ตัวเหลือ 1 ตัว
SELECT dateColumn, Column2 FROM YourTable WHERE dateColumn BETWEEN DATEADD(D,-(Day(@D2)-1),@D2) AND @D2
Tuesday, October 10, 2017
กรณีสร้างคอลัมน์ขึ้นมาเพื่อใช้ในการ JOIN
DECLARE @D1 DateTime
DECLARE @D2 DateTime
SET @D1 = '2017-10-01'
SET @D2 = '2017-10-02'
SELECT *
FROM (SELECT *,1 As j FROM YourTable WHERE YourColumn = @D1) As A
LEFT OUTER JOIN
(SELECT *,1 As j FROM YourTable WHERE YourColumn = @D2) As B
ON A.j = B.j
กรณี 3 ตาราง
DECLARE @D1 DateTime
DECLARE @D2 DateTime
SET @D1 = '2017-10-01'
SET @D2 = '2017-10-02'
SELECT *
FROM (SELECT *,1 As j FROM YourTable1 WHERE YourColumn = @D1) As A
LEFT OUTER JOIN
(SELECT *,1 As j FROM YourTable2 WHERE YourColumn = @D2) As B
ON A.j = B.j
LEFT OUTER JOIN
(SELECT *,1 As j FROM YourTable3 WHERE YourColumn = @D2) As C
ON A.j = C.j
Friday, April 1, 2016
DATEPART
ต้องการหาว่า
มีวันไหนบ้างที่จำนวน Record ไม่เท่ากับ 1440
มีวันไหนบ้างที่จำนวน Record ไม่เท่ากับ 1440
SELECT count(TagDateTime) AS recCnt,DATEPART(year,[TagDateTime]) AS iYear ,DATEPART(month,[TagDateTime]) AS iMth ,DATEPART(day,[TagDateTime]) As iDay
FROM TableName
group by DATEPART(year,[TagDateTime]),DATEPART(month,[TagDateTime]),DATEPART(day,[TagDateTime])
having count([TagDateTime]) <> 1440
order by DATEPART(year,[TagDateTime]),DATEPART(month,[TagDateTime]),DATEPART(day,[TagDateTime])
Monday, February 9, 2015
MS SQL Server - การใช้งาน Server Objects - Linked Servers
ที่มา: http://www.na-vigator.com/software-development/software-developement/387--run-query-server
แนะนำวิธีการใช้งานข้อมูลระหว่าง Database ของ Microsoft SQL Server หลายเครื่อง
ให้สามารถทำงานร่วมกันได้ ซึ่งจะช่วยให้คุณ Select, Insert, Delete, Update ข้อมูลระหว่าง Server
ได้ไม่ยาก ซึ่งสามารถนำไปใช้ในการโอนข้อมูล , ดึงข้อมูลจากฐานข้อมูลของโปรแกรมหนึ่งมาใช้งานกับ
ฐานข้อมูลของอีกโปรแกรมหนึ่งได้ไม่ยาก
สรุปขั้นตอนดังนี้
ในกรณีการดึงข้อมูลข้าม Server ก็ใช้วิธีไม่ต่างกัน เพียงแต่เพิ่มชื่อ Server ไว้ข้างหน้าชื่อ Database เช่น
Server1.Database1.dbo.Table1
หรือ
[Server1\SQL2008].Database1.dbo.Table1
หรือ
[128.xxx.xxx.xxx].Database1.dbo.Table1
แนะนำวิธีการใช้งานข้อมูลระหว่าง Database ของ Microsoft SQL Server หลายเครื่อง
ให้สามารถทำงานร่วมกันได้ ซึ่งจะช่วยให้คุณ Select, Insert, Delete, Update ข้อมูลระหว่าง Server
ได้ไม่ยาก ซึ่งสามารถนำไปใช้ในการโอนข้อมูล , ดึงข้อมูลจากฐานข้อมูลของโปรแกรมหนึ่งมาใช้งานกับ
ฐานข้อมูลของอีกโปรแกรมหนึ่งได้ไม่ยาก
สรุปขั้นตอนดังนี้
- Login MS SQL Server ด้วย User กลุ่ม System Admin
- ไปที่ Server Objects => คลิกขวาที่ Linked Servers เลือก New Linked Server...
- Server type: เลือก SQL Server
- Linked server: ใส่ชื่อเครื่อง Server หรือในที่นี้จะใส่ IP Address ของเครื่อง Server
- คลิกที่ page: Security
- กดปุ่ม Add
- ป้อน Local Login, Remote User และ Remote Password
- กดปุ่ม OK
ในกรณีการดึงข้อมูลข้าม Server ก็ใช้วิธีไม่ต่างกัน เพียงแต่เพิ่มชื่อ Server ไว้ข้างหน้าชื่อ Database เช่น
Server1.Database1.dbo.Table1
หรือ
[Server1\SQL2008].Database1.dbo.Table1
หรือ
[128.xxx.xxx.xxx].Database1.dbo.Table1
MS SQL Server คำสั่งคัดลอกข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง
1.กรณีคัดลอกไปทุกคอลัมน์
INSERT INTO table2 SELECT * FROM table12.กรณีคัดลอกไปบางคอลัมน์แบบมีเงื่อนไข
INSERT INTO Customers (CustomerName, Country) SELECT SupplierName, Country FROM Suppliers WHERE Country='Germany'
MS SQL SERVER คำสั่งลบแถวซ้ำ
select distinct * into #tmp From EmpDup
delete from EmpDup
insert into EmpDup
select * from #tmp drop table #tmp
Sunday, June 29, 2014
SQL Command เลือกเฉพาะวันสุดท้ายของแต่ละเดือน
SELECT
*
FROM
YourTable
WHERE
DateField IN (
SELECT MAX(DateField)
FROM YourTable
GROUP BY MONTH(DateField), YEAR(DateField)
)
Thursday, September 26, 2013
ต้องการใช้ Select Command เลือก Record Number และ Record Count มาด้วย
Use the following code in SQL Server
ตัวอย่าง Select Record Number มาด้วย
select rank() OVER (ORDER BY a.au_lname, a.au_fname) as rank, a.au_lname, a.au_fname
from authors a
order by rank
ตัวอย่าง Select Record Count มาด้วย
SELECT my_table.my_col, count(*) OVER() AS 'Count'
FROM my_table
WHERE my_table.foo = 'bar'
ตัวอย่าง Select Record Number มาด้วย
select rank() OVER (ORDER BY a.au_lname, a.au_fname) as rank, a.au_lname, a.au_fname
from authors a
order by rank
ตัวอย่าง Select Record Count มาด้วย
SELECT my_table.my_col, count(*) OVER() AS 'Count'
FROM my_table
WHERE my_table.foo = 'bar'
Thursday, October 4, 2012
SQL Server : คำสั่ง Select หลาย Table
เมื่อก่อนหลายคนอาจเคยใช้แบบโบราณแบบนี้ซึ่งไม่ถูกต้องตามมาตรฐาน ANSI SQL เช่น
แล้วเขียนอย่างไรจึงจะถูกต้องตามมาตฐานหละ ก็เขียน
ประมาณนี้นะ
select t1.col1, t2.col1, t3.col1, t4.col1 ... etc
from table1 t1
inner join table2 t2
on t1.col2 = t2.col2
inner join table3 t3
on t1.col3 = t3.col3
inner join table4 t4
on t1.col4 = t4.col4
where ...
etc.
หรือ
ลองมาดูตัวอย่าง Inner และ Outer Joins กัน
ผลลัพท์ที่ได้ก็ลองคิดดูนะ
SELECT * FROM TableOne t1, TableTwo t2 WHERE t1.SomeKey = t2.Id AND t1.SomeValue = 'search'
แล้วเขียนอย่างไรจึงจะถูกต้องตามมาตฐานหละ ก็เขียน
ประมาณนี้นะ
select t1.col1, t2.col1, t3.col1, t4.col1 ... etc
from table1 t1
inner join table2 t2
on t1.col2 = t2.col2
inner join table3 t3
on t1.col3 = t3.col3
inner join table4 t4
on t1.col4 = t4.col4
where ...
etc.
หรือ
SELECT * FROM TableOne t1 INNER JOIN TableTwo t2 ON t1.SomeKey = t2.Id WHERE t1.SomeValue = 'search'
ลองมาดูตัวอย่าง Inner และ Outer Joins กัน
1.Inner Join
select * from dbo.Students S INNER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID
ผลลัพท์
2.Left Outer Join
select * from dbo.Students S LEFT OUTER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID
3.Right Outer Join
select * from dbo.Students S RIGHT OUTER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID
ผลลัพท์ที่ได้ก็ลองคิดดูนะ
4.Full Outer Join
select * from dbo.Students S FULL OUTER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID
5.เลือก Row ที่ไม่ Join
select * from dbo.Students S FULL OUTER JOIN dbo.Advisors A ON S.Advisor_ID=A.Advisor_ID where A.Advisor_ID is null or S.Student_ID is null
VB.Net ต้องการให้ Datagridview, Gridview แสดงเลขที่บรรทัด
VB.Net ต้องการให้ Datagridview, Gridview แสดงเลขที่บรรทัด
ก็ต้องเริ่มจากตอนที่ Select มาก็ให้เอาเลขที่บรรทัดมาด้วยตัวอย่างเช่นSELECT *, ROW_NUMBER() OVER( ORDER BY ColumnName1 ) AS RowNumber
FROM Table1
ก็ประมาณนี้แหละ
Monday, August 6, 2012
SQL Command - Select เฉพาะเวลาที่ต้องการ
ถาม ถ้าใน TABLE1 มีคอลัมน์ชื่อ DateColumn1 ชนิด DateTime
ใน TABLE1 นั้นมี Records ทุก ๆ ชั่วโมงทุก ๆ วัน
ถ้าเราต้องการเฉพาะเวลา 9.00 น.ของแต่ละวัน จะใช้คำสั่ง Select แบบไหน
ตอบ
สามารถใช้ฟังก์ชั่น DATEPART มีตัวอย่างดังนี้
SELECT * FROM TABLE1
WHERE DATEPART(hh, DateColumn1) = 9
ใน TABLE1 นั้นมี Records ทุก ๆ ชั่วโมงทุก ๆ วัน
ถ้าเราต้องการเฉพาะเวลา 9.00 น.ของแต่ละวัน จะใช้คำสั่ง Select แบบไหน
ตอบ
สามารถใช้ฟังก์ชั่น DATEPART มีตัวอย่างดังนี้
SELECT * FROM TABLE1
WHERE DATEPART(hh, DateColumn1) = 9
Sunday, July 15, 2012
SQL command - Returning TOP N Records
Microsoft SQL Server
SELECT TOP 100 column FROM table
MySQL
SELECT column FROM table
LIMIT 100
Oracle
SELECT column FROM table
WHERE ROWNUM <= 100
SELECT TOP 100 column FROM table
MySQL
SELECT column FROM table
LIMIT 100
Oracle
SELECT column FROM table
WHERE ROWNUM <= 100
Sunday, June 24, 2012
ASP.Net : SQL Data Connection แบบที่ 3
คล้ายแบบที่ 2 แต่ใช้ DataView
Dim ds As New DataSet
Dim dt As New DataTable
Dim dv As DataView
DA.Fill(ds, "Table1")
dt = ds.Tables("Table1")
dv = dt.DefaultView
dv.Sort = "Column1 DESC, Column2"
dv.RowFilter = "Column2 > 800000"
GridView1.DataSource = dv
GridView1.DataBind()
Dim ds As New DataSet
Dim dt As New DataTable
Dim dv As DataView
DA.Fill(ds, "Table1")
dt = ds.Tables("Table1")
dv = dt.DefaultView
dv.Sort = "Column1 DESC, Column2"
dv.RowFilter = "Column2 > 800000"
GridView1.DataSource = dv
GridView1.DataBind()
ASP.Net : SQL Data Connection แบบที่ 2
คล้ายแบบที่ 1 แต่ใช้ Data Table
Dim ds As New DataSet
Dim dt As New DataTable
DA.Fill(ds, "Table1")
dt = ds.Tables("Table1")
GridView1.DataSource = dt
Dim ds As New DataSet
Dim dt As New DataTable
DA.Fill(ds, "Table1")
dt = ds.Tables("Table1")
GridView1.DataSource = dt
Monday, December 26, 2011
หาความยาวสูงสุดของ Text Field ที่ต้องการ
SELECT MAX(LEN(YourTextColumn)) FROM YourTable
Wednesday, November 30, 2011
Update คอลัมน์ชนิด Bit ที่ยังเป็น Null
UPDATE YourTable SET YourColumn = 'False' WHERE YourColumn IS Null
Subscribe to:
Posts (Atom)






