| id | text |\n|----|-------|\n| 1 | AB |\n| 2 | CD%EF |\n| 3 | GH |\nRun Code Online (Sandbox Code Playgroud)\n我在表中有一个文本列,其值带有“%”符号。
\n我想使用以下查询 \xe2\x80\x94 提取该值
\nSELECT text FORM table\nWHERE text ILIKE '%%%'\nRun Code Online (Sandbox Code Playgroud)\n预期输出应该是:
\nCD%EF\n1 {row}\nRun Code Online (Sandbox Code Playgroud)\n实际输出返回:
\nAB\nCD%EF\nGH\n3 {rows}\nRun Code Online (Sandbox Code Playgroud)\n 下面是我的 SQL 函数脚本,它将帮助识别字母数字值和破折号 ( -):
CREATE FUNCTION [dbo].[FN_VALIDATE_ALPHANUMERIC_AND_DASHES](@TX_INPUT VARCHAR(1000))RETURNS BIT AS
BEGIN
DECLARE @bitInputVal AS BIT = 0
DECLARE @InputText VARCHAR(1000)
SET @InputText = LTRIM(RTRIM(ISNULL(@TX_INPUT,'')))
IF @InputText <> ''
BEGIN
SET @bitInputVal = CASE
WHEN @InputText LIKE '%[A-Za-z0-9-]%' THEN 1
ELSE 0
END
END
RETURN @bitInputVal
END
Run Code Online (Sandbox Code Playgroud)
我尝试此查询时遇到问题:
SELECT dbo.FN_VALIDATE_CLAIMANT_REF_NO('AbcdefgH-1234*')它给出的结果是,1尽管该字符*未包含在正则表达式中,但应该返回0。
我想要实现的是显式验证字符串是否仅包含字母数字 (字母和数字)和破折号。
请注意,字符长度没有限制,仅检查字符串是否由字母数字和破折号组成。
有一个电子邮件域列表,并且想要标记“免费”(如果该域类似于免费域),这对我来说适用于硬编码列表,如下所示:
CASE WHEN lower(email_domain) ilike any ('%%gmail%%','%%yahoo%%', '%%hotmail%%') THEN 'free' else 'business' end
Run Code Online (Sandbox Code Playgroud)
但我真正想做的是从不同表中的列中获取免费域列表,如下所示:
| SUBSTRING_VALUE |
|:------------------|
| "gmail" |
| "hotmail" |
| "yahoo" |
Run Code Online (Sandbox Code Playgroud)
我尝试过使用带有 listagg 或 arrayagg 的子查询,但它不起作用,有什么方法可以做到这一点?
有谁知道LIKE最流行的数据库的SQL 运算符的复杂性是什么?
我正在尝试在Progress SQL中做这样的事情(这不是POSTGRES!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Run Code Online (Sandbox Code Playgroud)
但是Progress不支持LIKE运算符.INSTR看起来它可能会完成这项工作,但它是一个Progress扩展,我正在使用的数据库不支持.是否有另一种使用标准ODBC函数实现此目的的方法?
谢谢
var list = (from i in _dataContext.aspnet_Users.Include("aspnet_Membership") where i.UserName.Contains(userName) select i ).ToList();
Run Code Online (Sandbox Code Playgroud)
如果userName=""那么没有回报.如果空字符串然后返回所有记录,我怎么能这样做?
我需要写一个像这样的sql语句:
SELECT id_segmento AS Segmento, Decode (id_segmento , '1' , 'a', 'b' )
FROM mapchile.segmento
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,当id_segmento等于'1'时,我将获得'a',即使字符串id_Segmento包含'1',我也需要它为'a',类似于类似的声明.
还有像Decode这样的其他命令吗?
谢谢.
我的名字很少
- 约翰,1
- 鬼才
- 玉米
这样的事情
现在,当我正在搜索我正在使用的这些名字时
select * from emp where empname like ('john,1,devil's,corn')
Run Code Online (Sandbox Code Playgroud)
但我没有得到预期的值,我也得到错误,因为emp名称包含特殊的字符,如'和'.
有人可以帮我解决这个问题吗?
我有一个T1带有列的表details,数据列有以下示例数据:
select details from T1;
\this is detail 1\this is detail2\
\this is detail 1\this is detail2\
:this is detail 1:this is detail2:
:this is detail 1:this is detail2:
\this is detail 1\this is detail2\
Run Code Online (Sandbox Code Playgroud)
我想只获取那些details被分隔的\.
为此,我写了以下查询:
select details from T1 where details like '\%\%\';
Run Code Online (Sandbox Code Playgroud)
但它没有像预期的那样回应,因为它作为逃脱校正器.
所以,它显示错误的不完整单倒(')!
那么,怎么做呢?
我有一个表(我们称之为A),其中一个文本字段被调用references_int,其中包含许多值.一个例子是'internal\reference[111]'.
如果我做
SELECT *
FROM A
WHERE references_int LIKE 'internal\\reference[111]'
Run Code Online (Sandbox Code Playgroud)
它将返回零行.但是,如果我更换LIKE与=它的工作原理.
我使用一个简化查找查询的框架,但它使用LIKE..有没有办法让它工作?
不知道这是一个错误还是一个功能.
谢谢!
sql-like ×10
sql ×7
mysql ×2
contains ×1
database ×1
decode ×1
linq ×1
openedge ×1
oracle ×1
postgresql ×1
progress-db ×1
snowflake-cloud-data-platform ×1
sql-server ×1
string ×1
t-sql ×1
where-clause ×1