英文:
Check if string contains one of the listed format
问题
我正在尝试创建一个搜索过程,该过程检查内容是否包含列出的任何文件格式之一。到目前为止,这是我想出来的,但由于某种原因它不起作用。
DECLARE @str nvarchar(max) = 'somefile.png';
IF @str LIKE '%.png%' OR @str LIKE '%.jpg%' OR @str LIKE '%.svg%' OR @str LIKE '%.gif%'
SELECT 'true'
ELSE
SELECT 'false';
我需要将所需的格式传递给一个字符串变量,所以不能使用“OR”运算符。
英文:
I'm trying to create a search procedure that checks whether the content contains any of the listed file formats. Here's what I've come up with so far, but it's not working for some reason.
DECLARE @str nvarchar(max) = 'somefile.png';
IF @str LIKE '%(png|jpg|svg|gif)%'
SELECT 'true'
ELSE
SELECT 'false';
I need to pass the desired formats into a string variable so I can't use the "OR" operator.
答案1
得分: 2
为了开始解决问题,请查看下面的代码。
DECLARE @str nvarchar(max) = 'somefile.png';
DECLARE @var nvarchar(max) = 'png|jpg|svg|gif';
IF RIGHT(@str,3) IN (SELECT value FROM STRING_SPLIT(@var, '|') )
SELECT 'true'
ELSE
SELECT 'false';
您可以通过将其更改为接受超过3个字符的文件扩展名来使其更通用。
英文:
To start you with the solution check below code.
DECLARE @str nvarchar(max) = 'somefile.png';
DECLARE @var nvarchar(max) = 'png|jpg|svg|gif';
IF RIGHT(@str,3) IN (SELECT value FROM STRING_SPLIT(@var, '|') )
SELECT 'true'
ELSE
SELECT 'false';
You can make it more generic by changing it to accept more then 3 characters in the file extension.
答案2
得分: 0
这实际上很容易通过使用 parsename 来使任何扩展名的长度都能工作。
尝试以下方法:
declare @str varchar(50) = 'somefile.jpeg',
@ext varchar(50) = 'png|jpg|svg|gif|jpeg'
if Len(@ext) != Len(Replace(@ext, ParseName(@str,1), ''))
select 'true'
else
select 'false';
英文:
This is actually easy to make work for any length of extension by using parsename
Try the following approach:
declare @str varchar(50) = 'somefile.jpeg',
@ext varchar(50) = 'png|jpg|svg|gif|jpeg'
if Len(@ext) != Len(Replace(@ext, ParseName(@str,1), ''))
select 'true'
else
select 'false';
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论