如何使用SQL子字符串从该文件名中提取字符?

发布于 2025-02-04 18:15:23 字数 386 浏览 4 评论 0原文

我正在尝试使用子弦函数从文件名中提取名称。

示例文件名是:“ 73186_rhimagnesita_phi_phi_stoploss_truncsssn_nonredact_inc_to_to_apr2022_paid_paid_to_apr2022_edit” 我正在尝试从该文件名提取“ Rhimagnesita”。

我使用的子字符串是:

SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1, CHARINDEX('_PHI', DFH.FileName) - 1)  

它给出的结果是:“ rhimagnesita_phi_s”

如何仅使用基因函数提取“ rhimagnesita”?

I'm attempting to use the SUBSTRING function to extract a name out of a filename.

An example filename would be: "73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT"
I'm attempting to extract the "RHIMagnesita" from this filename.

The substring I used was:

SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1, CHARINDEX('_PHI', DFH.FileName) - 1)  

The results it gave were: "RHIMagnesita_PHI_S"

How do I extract only "RHIMagnesita" using the Substring function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撕心裂肺的伤痛 2025-02-11 18:15:23

子字符串中的第三个参数是长度不是位置,因此您需要提取开始字符串的长度。

SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1, CHARINDEX('_PHI', DFH.FileName) - CHARINDEX('_', DFH.FileName))

您可能需要添加或提取1,但这就是想法。

The third parameter in SUBSTRING is length not position, so you would need to substract the length of the beginning string.

SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1, CHARINDEX('_PHI', DFH.FileName) - CHARINDEX('_', DFH.FileName))

You might need to add or substract 1, but that's the idea.

孤千羽 2025-02-11 18:15:23

你很近。您需要使用charindex也可以找到第二个下划线的位置。

SELECT SUBSTRING(FileName,
                 CHARINDEX('_', FileName) + 1,
                 CHARINDEX('_', FileName, CHARINDEX('_', FileName) + 1) -
                     CHARINDEX('_', FileName) - 1) AS FilePart
FROM yourTable;

You were close. You need to use CHARINDEX to also find the position of the second underscore.

SELECT SUBSTRING(FileName,
                 CHARINDEX('_', FileName) + 1,
                 CHARINDEX('_', FileName, CHARINDEX('_', FileName) + 1) -
                     CHARINDEX('_', FileName) - 1) AS FilePart
FROM yourTable;
明媚殇 2025-02-11 18:15:23

这是使用String_split和获取的一种方法,而不是子字符串,我们将字符串分开,仅返回第二行

SELECT
   value
FROM   STRING_SPLIT('73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT','_')
ORDER BY (SELECT NULL)
OFFSET 1 ROWS 
FETCH NEXT 1 ROWS ONLY;

注:在Azure SQL Server string_split上有一个序数参数,因此您可以编写此信息

SELECT
value
FROM
STRING_SPLIT('73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT','_', 1)
WHERE ordinal = 2

Here's a way using STRING_SPLIT and FETCH, rather than SUBSTRING We split the string and only return the second row

SELECT
   value
FROM   STRING_SPLIT('73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT','_')
ORDER BY (SELECT NULL)
OFFSET 1 ROWS 
FETCH NEXT 1 ROWS ONLY;

Note: On Azure Sql Server STRING_SPLIT has an ordinal parameter, so you could write this

SELECT
value
FROM
STRING_SPLIT('73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT','_', 1)
WHERE ordinal = 2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文