 |
|
เรื่อง database split คำออกจาก column เดียวกับ ไปอยู่ อีก table นึง |
|
 |
|
|
 |
 |
|
Code (SQL)
Create function fnMaxAddress(@value varchar(max)) returns @result table
(
ip varchar(30),
mac_address varchar(30)
)
as
begin
declare @index int
declare @ip varchar(max)
set @index = CHARINDEX('dvc=',@value)
set @ip= ltrim(substring(@value,@index+4,len(@value)))
insert into @result
select substring(@ip,1,CHARINDEX(' ',@ip)),
ltrim(replace(substring(@ip,CHARINDEX(' ',@ip),len(@ip)),'deviceMacAddress=',''))
return
end;
วิธีเรียกใช้นะจะ
Code (SQL)
declare @value varchar(max) = 'CEF:0|Trend Micro|Deep Discovery Inspector|3.7.1096|100101|Web
Reputation Services detected a malicious URL request|6|dvc=192.168.103.232 deviceMacAddress=
84:8F:69:E8:E4:BE';
select ip,mac_address from fnMaxAddress(@value)
--192.168.103.232 84:8F:69:E8:E4:BE
|
ประวัติการแก้ไข 2015-05-21 13:21:06
 |
 |
 |
 |
Date :
2015-05-21 13:20:12 |
By :
ipstarone |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่อง database
พี่ครับแล้วถ้าผมจะถามอีกหน่อยว่า วิธีเรียกใช้อะครับถ้ามันอยู่ ใน column ผมใช้
declare @value varchar(max) = MsgText (ชื่อcolumn) ได้ไหมครับ หรือต้องใช้ยังไงครับ รบกวนทีนะครับ
แล้วผมจะเอาค่าที่ได้มา ไปอยู่ในอีก table โดยการ
insert เข้าไปหรือเปล่าครับ
|
 |
 |
 |
 |
Date :
2015-05-21 15:26:52 |
By :
omyam001 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
CREATE TABLE [dbo].[macaddress](
[ip] [varchar](50) NULL,
[mac_address] [varchar](50) NULL
)
วิธี insert นะ  
Code (SQL)
insert into macaddress
SELECT s.ip,s.mac_address FROM customers1 AS t CROSS APPLY dbo.fnMaxAddress(t.txtip) AS s;
fnMaxAddress(t.txtip) ใส่ column ของเราเข้าไป
ไม่เคยเขียนแบบนี้เหมือนกัน แต่หามาให้ สู้ๆ
|
 |
 |
 |
 |
Date :
2015-05-21 15:48:30 |
By :
ipstarone |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ครับ รบกวนอีกทีนะครับ
คือ table ผมชื่อ Syslogd
แล้ว column ชื่อ MsgText
ถ้าผมต้องการที่จะใช้ ฟังก์ชัน ที่พี่เขียนมาให้อะครับ คือมันมีข้อมูลประมาณ 10 อันอะครับ
ผมต้อง ใช้ for ไหมครับ
แต่คือตอนนี้ พอเอา Syslogd.MsgText มันยังไม่ออกมาให้เลยอะครับ
ผลลองใช้อันนีก็ยังไม่ออกมาอะครับ select ip,mac_address from fnMaxAddress(Syslogd.MsgText)
พอมีแนวทางไหมครับ
|
 |
 |
 |
 |
Date :
2015-05-21 17:15:59 |
By :
omyam001 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันต้อง join table ครับ
SELECT s.ip,s.mac_address FROM Syslogd as t CROSS APPLY dbo.fnMaxAddress(t.MsgText) AS s;
พอ select ได้เสร็จ เราก็ insert
ลองศึกษาการ insert select นะ
https://www.thaicreate.com/tutorial/sql-insert-select.html
ถ้าไม่ได้จริงๆ ก็ เอา โครงสร้าง สอง Table มาดูหน่อย 
|
 |
 |
 |
 |
Date :
2015-05-21 20:29:12 |
By :
ipstarone |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เป็นรูป ฐานข้อมูลนะครับ ผมอยากจะให้มัน ไปอยู่ใน table macaddress อะครับ โดยมี ip กับ mac 2 ค่า
ที่อยู่ใน Syslogb column MsgText อะครับผม ค่า IP กับ MAC

|
 |
 |
 |
 |
Date :
2015-05-22 09:55:40 |
By :
omyam001 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
Create function fnMaxAddress(@value varchar(max)) returns @result table
(
ip varchar(30),
mac_address varchar(30)
)
as
begin
declare @index int
declare @ip varchar(max)
set @index = CHARINDEX('dvc=',@value)
set @ip= ltrim(substring(@value,@index+4,len(@value)))
insert into @result
select substring(@ip,1,CHARINDEX(' ',@ip)),
ltrim(replace(substring(@ip,CHARINDEX(' ',@ip),len(@ip)),'deviceMacAddress=',''))
return
end;
Code
insert into macaddress SELECT s.ip,s.mac_address FROM syslogd AS t CROSS APPLY dbo.fnMaxAddress(t.MsgText) AS s;
|
 |
 |
 |
 |
Date :
2015-05-22 10:37:02 |
By :
ipstarone |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รบกวนอีกทีนะครับ มันยังติด Error อยู่ อะครับ
ผมยังงกับ ขบวนการการเรียกของ mysql server อยู่อะครับ
พอดีเคยใช้แต่ phpmyadmin
รบกวนอีกทีนะครับพี่

|
 |
 |
 |
 |
Date :
2015-05-22 10:46:58 |
By :
omyam001 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|