 |
|
|
 |
 |
|

Code (C#)
--FOR MSSQL
SELECT
CASE
WHEN CHARINDEX('/' ,[ANY_SUPPORT_CHARACTOR_FIELD]) > 1 THEN
SUBSTRING( [ANY_SUPPORT_CHARACTOR_FIELD],1
,CHARINDEX('/' ,[ANY_SUPPORT_CHARACTOR_FIELD])-1)
ELSE NULL
END AS STRING_BEFORE_SLASH
FROM [ANY_TABLE_NAME]
WHERE ......
|
 |
 |
 |
 |
Date :
2010-06-15 12:41:42 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันไม่ได้ตามที่ต้องการอ่ะคะ แล้วหนูก็ไม่เข้าsqlที่ให้มาด้วย ช่วยอธิบายหน่อยได้ไหมคะ
|
 |
 |
 |
 |
Date :
2010-06-15 13:05:59 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เคยใช้ SUBSTRING ของ .NET ปะคะ
หลักการแบบเดียวกันค่ะ เพียงแต่ string index ของ .net เริ่มที่ 0
ของ SQL จะเริ่มที่ 1 และในที่นี้หาตำแหน่งของ / ด้วย function CHARINDEX
จากนั้นก็อเอามาตัด
ANY_SUPPORT_CHARACTOR_FIELD แทนด้วยชื่อ field ของคุณ
ANY_TABLE_NAME แทนด้วยชื่อ TABLE ของคุณค่ะ
จบคำอธิบายค่ะ
|
 |
 |
 |
 |
Date :
2010-06-15 13:11:28 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วถ้าเราจะ group ตามฟิวที่เราตัดอ่ะคะ จะ group by ยังไงเอ่ย
|
 |
 |
 |
 |
Date :
2010-06-15 13:29:35 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

Code (C#)
--FOR MSSQL
SELECT *
FROM
(
SELECT
CASE
WHEN CHARINDEX('/' ,[ANY_SUPPORT_CHARACTOR_FIELD]) > 1 THEN
SUBSTRING( [ANY_SUPPORT_CHARACTOR_FIELD],1
,CHARINDEX('/' ,[ANY_SUPPORT_CHARACTOR_FIELD])-1)
ELSE NULL
END AS STRING_BEFORE_SLASH
FROM [ANY_TABLE_NAME]
) AS PRIMARY_QUERY
GROUP BY STRING_BEFORE_SLASH
|
 |
 |
 |
 |
Date :
2010-06-15 13:45:12 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถามอีกนิดนะคะ พอดีว่ามันต้อง selectวันที่ แล้วก็sumยอดเงิน ของฟิวที่ตัดมาได้ด้วยอ่ะคะ ลองเอาไปใส่เพิ่มในหลายๆที่ แล้วมันก็errorอ่ะคะ รบกวนหน่อยนะคะ
|
 |
 |
 |
 |
Date :
2010-06-15 14:05:10 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่วยกรุณา ลง table structure ที่เกี่ยวข้องให้ครบถ้วนด้วยค่ะ
อยากให้ทำให้ดูเลยหรือว่าจะให้แนะนำเพื่อไปปฏิบัติเองคะ
|
 |
 |
 |
 |
Date :
2010-06-15 14:12:00 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำให้ดูก็ได้คะ ถ้าไม่ลำบากจนเกินไป ไม่เคยใช้ charindex เลยคะ คือตอนแรก เขียนsql แบบนี้คะ
select substring(number,1,8) as number,date,sum(amount) as amount from chqout where number between '111' and '222' and chqnumber like '[0-9]%' group by substring(chqnumber,1,8),paymentdate
union
select number,date,amount from chqout where number between '111' and '222' and number like '[ก-ฮ]%' order by number
ทีนี้ฟิวด์ number อ่ะคะ มันมีจำนวนไม่เท่ากัน ก็เลยตัดไม่ถูก เลยจะเอาโค้ดที่คุณเขียนให้ดู ไปปรับใช้แทนที่ในส่วนของ substring(number,1,8) as number ทีนี้มันไม่ได้อ่ะคะ เลยไม่รู้จะแก้ยังไงดี
|
 |
 |
 |
 |
Date :
2010-06-15 14:22:28 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อืม ก๊อปปมาผิดพลาดนิดนึงนะคะ ตรง chqnumber กับ number มันคือตัวเดียวกันคะ
|
 |
 |
 |
 |
Date :
2010-06-15 15:00:26 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (C#)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[GETSTR_BEFORE_SOMTHNIG]
(
@VarStrTofind AS NVARCHAR(MAX) ,@VarSource AS NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
-- Declare the return variable here
DECLARE
@CUTTING_POSITION AS INT ,
@RET_STR AS NVARCHAR(MAX);
-- Add the T-SQL statements to compute the return value here
SET @CUTTING_POSITION = CHARINDEX(@VarStrTofind ,@VarSource);
IF @CUTTING_POSITION <= 1
BEGIN
SET @RET_STR = SUBSTRING(@VarSource ,1 ,@CUTTING_POSITION -1);
END
ELSE
BEGIN
SET @RET_STR ='' ;
END
-- Return the result of the function
RETURN @RET_STR ;
END
GO
เอาไปรันที่ Sql Server Management Studio
ซึ่งจะได้ scalar function ตัวใหม่ จากนั้นเอาไปใส่ใน query เดิมของคุณ
น่าจะง่ายกว่าค่ะ
Code (C#)
select GETSTR_BEFORE_SOMTHNIG('/' , number) as number
,date, sum(amount) as amount
from chqout
where (number between '111' and '222')
and (number like '[0-9]%')
group by GETSTR_BEFORE_SOMTHNIG('/', number)
,paymentdate
|
 |
 |
 |
 |
Date :
2010-06-15 15:20:35 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือจริงๆแล้วอยากได้ sql สำหรับใช้ select ข้อมูล เพราะตอนนี้ไม่ได้เขียน.net หรอกคะ กำลังเขียนdelphi อยู่ แต่เพราะความเคยชินกับบอร์ด.net เลยมาตั้งถามในนี้ บวกกับไม่รู้จะไปถามในไหนดี ยังไงก็ขอบคุณมากนะคะ อุตส่าห์ตอบมาตั้งนาน 
|
 |
 |
 |
 |
Date :
2010-06-15 15:28:39 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่ตอบไปคงช่วยได้มังคะ
|
 |
 |
 |
 |
Date :
2010-06-15 15:33:53 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่วยได้นะคะ แต่ตอนนี้ก็groupไม่ได้แหละคะ
ลองทำตาม comment ที่แล้วนะคะ เอาไปรันแล้ว มันก็ยังใช้ไม่ได้อ่ะคะ
|
 |
 |
 |
 |
Date :
2010-06-15 15:37:51 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าจะ GROUP ก้อซ้อน QUERY เข้าไป
ที่จะแนะก้อแนะไปหมดแล้วค่ะ
|
 |
 |
 |
 |
Date :
2010-06-15 15:51:23 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
group ได้แลเวแหละคะ แต่กลับsumไม่ได้ซะงั้น มันเอาข้อมูลเรคคอร์ดแรกมาโชว์แทน 
|
 |
 |
 |
 |
Date :
2010-06-15 17:41:21 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือปกติการเขียน query ที่เริ่มๆจะซับซ้อนนี่ ต้องรู้ความหมายของโจทย์ด้วยค่ะ
เห็นมาสั้นๆแบบนี้ ด้วยขมองอันมึนตึ้บ บางทีก็จินตการรัยไม่ออกเหมือนกัน
จริงๆ น่าจะเอา query ที่ใช้อยู่แล้ว มาแปะ
แล้วอธิบายว่าเอาไปทำอะไร เพื่ออะไร คงไม่ถามตอบกันยาวขนาดนี้มังคะ
|
 |
 |
 |
 |
Date :
2010-06-15 17:52:31 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็นผมให้เขาไปอ่าน sql เพิ่มเติมตั้งนานแล้ว จะได้คุยกันรู้เรื่อง
|
 |
 |
 |
 |
Date :
2010-06-15 20:54:38 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เธอคนนี้เข้าใจ SQL ดีค่ะพี่ตึ๋ง
แค่สับสนนิดหน่อย กับอยากได้ SECOND OPINION
และเธออยากแน่ใจว่าคนตอบมีความรุพอหรือเปล่าน่ะค่ะ
|
 |
 |
 |
 |
Date :
2010-06-15 21:02:23 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หนูก็รู้แค่พื้นฐานแหละคะ ส่วนsqlที่ซับซ้อน ก็เริ่มงงๆ เลยอยากได้ตัวอย่างในการเขียนก็เท่านั้น
ถ้าไม่พอใจอะไร ก็ขอโทษด้วยนะคะ
|
 |
 |
 |
 |
Date :
2010-06-16 09:43:07 |
By :
จุ๊บุ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้พอใจอะไรค่ะ
แค่อดคิดไม่ได้ว่ามีความสามารถพอที่จะตอบได้หรือเปล่าค่ะ
|
 |
 |
 |
 |
Date :
2010-06-16 12:33:17 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|