ภาษา sql ยังไงเพื่อจะจับ/ดูเป็นพิเศษมาตรฐานข้อความจากคอลัมน์ต้อง populate ค่าสำหรับคำนวณคอลัมน์

0

คำถาม

ในภาษา sql เซิร์ฟเวอร์ 2016 ฉันมีโต๊ะกับ varchar คอลัมน์(ชื่อ)นั้นมีบางอย่างของค่าของที่ด้านล่างนี้

title
ProALPHA - S - HTML Custom Table implementation (E001445)
IKA CP Implementation (Aus) (E001534-0001)
Test Engagment Integration: (E001637-0003) Non-billable
Customer requests customization for Analytics and Java Migration - E000797
Create list with customers renewing in H2 2020

ฉันอยากจะ populate ค่าสำหรับคำนวณ(derived)คอลัมน์จากพื้นฐานที่อยู่เหนือหัวเรื่องคอลัมน์ในทางในทางนั้น

ค้นหาชื่อคอลัมน์จะบรรจุข้อความ E00 แล้วเท่านั้นที่ derived คอลัมน์จะมี E00 ค่าอื่นโพรโทคอล aimcomment

ตัวอย่างเช่น

Expected Output

ขอบคุณ

2

คำตอบที่ดีที่สุด

2

คิดว่าของฉันคำถามเรื่องนั้นค่าเสมอส่วนขยายข้อความหรือค่าที่คุณต้องการเสมอ suffixed โดยตรงวงเล็บงั้นคุณสามารถทำได้ต่อไปนี้กับใครบาง CHARINDEXs และ SUBSTRING:

USE Sandbox;
GO

SELECT V.Title,
       SUBSTRING(V.Title,E.CI,RP.CI - E.CI) AS YourColumn
FROM (VALUES('ProALPHA - S - HTML Custom Table implementation (E001445)'),
            ('IKA CP Implementation (Aus) (E001534-0001)'),
            ('Test Engagment Integration: (E001637-0003) Non-billable'),
            ('Customer requests customization for Analytics and Java Migration - E000797'),
            ('Create list with customers renewing in H2 2020'))V(Title)
      CROSS APPLY (VALUES(NULLIF(CHARINDEX('E00',V.Title),0)))E(CI)
      CROSS APPLY (VALUES(ISNULL(NULLIF(CHARINDEX(')',V.Title,E.CI),0),LEN(V.Title)+1)))RP(CI);

db<>ลื่นไหล

2021-11-23 23:39:56

ขอบคุณ@Larnu แต่ฉัน populate ค่าของ derived คอลัมน์ที่ runtime. ง่ายๆก็คือในขณะที่กำลังสร้างโต๊ะรูปแบบการสั่งงาน. เมื่อมาตรฐานคอลัมน์หัวเรื่องก็คุณค่าของมัจากนั้น derived คอลัมน์ควรจะได้ค่าเป็น E00..หรือโพรโทคอล aimcomment.
Vikas J

นายหมายความว่ายังไงที่ว่า"ตอนวิ่งตรงเวลา'@VikasJ? ค่าของคอลัมน์ YourColumn, คือ คำนวณตอนหนีเวลา;เวลาที่นายต้องหนี SELECT.
Larnu

ฉันหมายความว่าฉันต้องการกำหนดส่วนที่คำนวณแล้วคอลัมน์ขณะกำลังสร้างเป็นโต๊ะนั่นจะเป็นค่าของ E00 หรือโพรโทคอล aimcomment จากค่าของมาตรฐานหัวเรื่องคอลัมน์
Vikas J

คุณจะต้องการที่จะใช้แสดงอยู่ด้านบนและรังพวกเขานั้น@VikasJ.
Larnu
1

หนึ่งตัวเลือกจะเป็นเพื่อใช้กับส่วนผสมของ Charindex แล้ว Substring. ข้อต่อไปนี้ 100 ควรจะเป็นประกาศความยาวของคอลัมน์-charindex จะหยุดตอนจบของข้อความ

นี่มันไม่ต้องการตอนจบวงเล็บ,มันดูเหมือสำหรับตัวเลขสุดท้าย.

with t as (
    select * from (values 
        ('ProALPHA - S - HTML Custom Table implementation (E001445)'                                    ),
        ('IKA CP Implementation (Aus) (E001534-0001)'                                                                   ),
        ('Test Engagment Integration: (E001637-0003) Non-billable'                                      ),
        ('Customer requests customization for Analytics and Java Migration - E000797'   ),
        ('Create list with customers renewing in H2 2020'                                                           )
    )t(title)
)
select title, 
   Iif(title like '%E00%',Reverse(Substring(part,patindex('%[0-9]%',part),100)),null)
from t
cross apply (values( Reverse(Substring(t.title, CharIndex('E00',t.title), 100 )) ))x(part)

ตัวอย่างลื่นไหล

ปรับปรุง

คุณ อาจจะ ด้วยอะไรซักอย่างที่อยู่เหนือเป็น ส่วนที่คำนวณแล้วคอลัมน์ ด้วยความช่วยเหลือของ ฟังก์ชัน ต้องการจะแทนที่ใช้ ปรับใช้.

นี่อาจจะไม่เป็นไรสำหรับของคุณใช้คงถึงแม้ว่าฉันขอแนะนำให้ใช้ มุมมอง หาตอนทั้งหมดสามารถเป็นไปได้

create function dbo.E00_Part(@title varchar(100))
returns varchar(100)
as
begin
    return (select Reverse(Substring(@title, CharIndex('E00',@title), 100 )))
end

create table T (title varchar(100), 
  Computed as Iif(title like '%E00%',
    Reverse(Substring(dbo.E00_Part(title),patindex('%[0-9]%',dbo.E00_Part(title)),100)),null))

เห็นสาธิตลื่นไหล 2

2021-11-23 10:22:48

ขอบคุณ@สตูแต่ฉัน populate ค่าของ derived คอลัมน์ที่ runtime. ง่ายๆก็คือในขณะที่กำลังสร้างโต๊ะรูปแบบการสั่งงาน. เมื่อมาตรฐานคอลัมน์หัวเรื่องก็คุณค่าของมัจากนั้น derived คอลัมน์ควรจะได้ค่าเป็น E00..หรือโพรโทคอล aimcomment.
Vikas J

@VikasJ ตอนนี้คุณกำลังขอให้เป็นคำถามที่แตกต่างเกี่ยวกับ ส่วนที่คำนวณแล้วคอลัมน์ -อย่างน้อยมันไม่ปลอดโปร่งตั้งคำถามของคุณเป็น derived คอลัมน์จะใช้กับที่มีค่าส่วนที่คำนวณแล้วจากที่มีอยู่แล้วคอลัมน์
Stu

ขออภัยถ้าผมถามคำถามไม่ชัดเจน แต่ใช่,ฉันต้องการกำหนดส่วนที่คำนวณแล้วคอลัมน์ขณะกำลังสร้างเป็นโต๊ะนั่นจะเป็นค่าของ E00 หรือโพรโทคอล aimcomment จากค่าของมาตรฐานหัวเรื่องคอลัมน์
Vikas J

@VikasJ ฉันต้องแนะนำการปรับปรุงด้านบน
Stu

ขอบคุณมาก@สตูแต่ตอนที่ฉันถูกเพิ่มไปอีก 2 ประเภทของหัวเรื่องฉันก็คงไม่ได้คาดหวังผลส่งออกในส่วนที่คำนวณแล้วคอลัมน์ โปรดตรวจสอบสุดท้ายที่ 2 แถวผลลัพธ์เดียวกันนั่นแหละ dbfiddle.อังกฤษซึ่ง/...
Vikas J

@VikasJ ขณะที่ฉันสามารถแก้ไขมันเพื่อที่จะรับมือกับมันกับคนแรกแถวใหม่ของคุณใหม่ที่สองแถวทำลายกฏคุณตั้,ie งสุดท้ายแถวตอนนี้ไม่มีการปิดรั้งและจำนวนไม่ได้ในตอนจบของข้อควางั้นนี่ก็เหมือนกันของ"สองรูปแบบ"คุณต้องการเขียนลงบนเวป
Stu

ตกลงมันก็แค่ว่าฉันต้อใหม่สถานการณ์ของคนสุดท้ายแถวอีกไม่กี่ mins งกลับจากลูกค้า wherein จำนวนอาจจะเริ่มแรกก็ตอนจบด้วยหรือไม่ด้วยเหล็กดัดฟัน แล้วอะไรที่เปลี่ยนแปลงที่จะทำที่จะให้คนแรกแถวใหม่ไปให้คาดหวังผล? เพราะว่าฉันพยายามจะทำให้เกิดการเปลี่ยนแปลงในข้อบังคัแสดงของ patindex%[0-9]%แต่มันไม่ได้ทำงานได้ดี
Vikas J

ดังนั้นถ้าคุณตอนนี้แทนที่[0-9]กับการปิดรั้งมันจะทำงานครังแรกของคุณแถวใหม่อย่างไรก็ตามที่เข้ามาจะต้องแตกต่างให้ใหม่ของคุณเงื่อนไขการเรียงลำดับ. โชคไม่ดีที่นี่เป็นย้าย goalpost.
Stu

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่