类SQL模式

类SQL模式,sql,Sql,我将left语句应用到需要指定一个值的字段中,如果left操作的结果是任何字符,如0到9,或X或Y 声明是 选择不喜欢“50%”的情况,左(值1)喜欢“[0-9 X-Y]”,然后选择“已批准” 这个模式正确吗 谢谢执行以下操作之一: select (case when T like '50%' and left(value, 1) like '[0-9 X-Y]' then 'Approved' . . . 或: 通常没有理由将left()与等混用 你的版本在技术上是正确的。但是模式是通用的(

我将
left
语句应用到需要指定一个值的字段中,如果
left
操作的结果是任何字符,如0到9,或X或Y

声明是

选择不喜欢“50%”的情况,左(值1)喜欢“[0-9 X-Y]”,然后选择“已批准”

这个模式正确吗

谢谢

执行以下操作之一:

select (case when T like '50%' and left(value, 1) like '[0-9 X-Y]' then 'Approved' . . .
或:

通常没有理由将
left()
等混用

你的版本在技术上是正确的。但是模式是通用的(可以匹配任何长度的字符串),您只需要与模式中的第一个字符进行比较。这会使陈述显得尴尬。

请执行以下操作之一:

select (case when T like '50%' and left(value, 1) like '[0-9 X-Y]' then 'Approved' . . .
或:

通常没有理由将
left()
等混用


你的版本在技术上是正确的。但是模式是通用的(可以匹配任何长度的字符串),您只需要与模式中的第一个字符进行比较。这让这个说法很尴尬。

你试过了吗?你得到了正确的结果吗?这是正确的…如果你的模式中有一个空格
'[0-9 X-Y]'
,那么你也将匹配任何以空格开头的内容。如果这是必需的行为,那么很好,如果不是,您将需要使您的模式
'[0-9X-Y]%'
几乎每个数据库都有某种形式的正则表达式可以做到这一点。在Postgres中,它们与
~
操作符一起使用;在MySQL中,它们与
RLIKE
一样;在Oracle中,它们与函数一起使用。SQL标准一与
类似,但其支持也有限。您使用的是什么RDBMS?MySQL
LIKE
不允许像
[0-9 X-Y]
这样的范围,你必须使用
REGEX
来实现。你试过了吗?你得到了正确的结果吗?这是正确的…如果你的模式中有一个空格
'[0-9 X-Y]'
,那么你也将匹配任何以空格开头的内容。如果这是必需的行为,那么很好,如果不是,您将需要使您的模式
'[0-9X-Y]%'
几乎每个数据库都有某种形式的正则表达式可以做到这一点。在Postgres中,它们与
~
操作符一起使用;在MySQL中,它们与
RLIKE
一样;在Oracle中,它们与函数一起使用。SQL标准一与
类似,但其支持也有限。您使用的是什么RDBMS?MySQL
LIKE
不允许像
[0-9 X-Y]
这样的范围,你必须使用
REGEX
。谢谢你的回答。这是真的,我没有想过。谢谢你的回答。的确,我没有想到这一点。