将字符串截断为 VBS 中的第一个通配符

Truncate String to first wildcard in VBS

我有以下表达式,它转到 SQL table (SQL Server 2008 R2) 并获取要打开的文件路径(通常是 PDF 或照片)被格式化为在我们的 Access 前端中用作超链接。

这是我在 VBS 文件中所做的...

Dim Input
Input = InputBox("Enter your WO#", "PDF Search", "ie. 40900500")

set conn2 = createobject("ADODB.Connection")
conn2.open "Driver={SQL Server}; Server=server; UID=user; PWD=password; Database=db;"    

dim sql2

msgbox("Testing fixture connection...")

dim rs2
set rs2 = createobject("ADODB.Recordset")

sql2 = "select Photo from Fixtures where Application = '" & input & "'"

rs2.open sql2, conn2

msgbox("It worked! Your photo is here: " & rs2.fields(0).value)

...最终 returns 这个...

...我只需要第一个数字符号之前的文件路径(此消息框只是为了测试连接并显示我正在使用的数据)。

如何截断从 SQL 返回的字段值直到第一个数字符号,以便我可以通过 运行 我的 .vbs 文件中的 powershell 对象打开文件?

随时欢迎任何帮助! :)

1) 您可以使用以下表达式在第一个 #:

之前提取文件路径
sql2 = "select LEFT(Photo, NULLIF(CHARINDEX('#', Photo), 0) - 1) from Fixtures where  ..."

如果某些行不包含 # 那么您可以使用:

sql2 = "select LEFT(Photo, ISNULL(NULLIF(CHARINDEX('#', Photo), 0) - 1, 260)) from Fixtures where  ..."

测试:

DECLARE @Photo VARCHAR(260) 
SET @Photo = 'J:\DRAWINGS\Folder1\File1.jpg#aaa#'

SELECT LEFT(@Photo, NULLIF(CHARINDEX('#', @Photo), 0) - 1) AS T1
-- J:\DRAWINGS\Folder1\File1.jpg

SET @Photo = 'J:\DRAWINGS\Folder1\File1.jpg'
SELECT LEFT(@Photo, ISNULL(NULLIF(CHARINDEX('#', @Photo), 0) - 1, 260)) AS T2
-- J:\DRAWINGS\Folder1\File1.jpg

2) 你应该避免在上一行中进行字符串连接

sql2 = "select Photo from Fixtures where Application = '" & input & "'"

您应该使用参数化查询 => 请参阅 SQL Injections