急急急,Sql查询一个字段是否存在某一个值,怎么写查询语句?

急急急,Sql查询一个字段是否存在某一个值,怎么写查询语句?,第1张

不知道是什么数据库..

oracle数据库sql语句如下:

select * from 表名 where instr(fuclass,'你要传入的参数')>0

其实这样也有问题,你这题的思路应该是先根据逗号分隔符截取字符串,然后根据你传入的参数和根据逗号截取出来的字符串进行比较,如果存在那就是你要的记录,否则就不是,但是oracle并不存在这样一种函数.比如gp中使用的split_part函数,所以比较麻烦,只能自己构建一个函数,然后调用这个函数先对字符串进行处理

出问题的原因是如果你传入一个'2',那么'22'也会算作是合格字符,而将结果返回

ODPS的wm_concat函数在行转列的时候非常有用,但在行转列的过程中的排序问题常常难以控制。官网的order子句在3.6.2版本中用不了,所以简单写了个SQL来实现:

①创建测试表及数据

create table tianyc01(h BIGINT , l BIGINT , v string)

insert into tianyc01 values(1,1,'a')

insert into tianyc01 values(1,2,'b')

insert into tianyc01 values(1,3,'c')

insert into tianyc01 values(1,4,'d')

insert into tianyc01 values(1,5,'e')

insert into tianyc01 values(1,6,'f')

insert into tianyc01 values(2,1,'A')

insert into tianyc01 values(2,2,'B')

insert into tianyc01 values(2,3,'C')

insert into tianyc01 values(2,4,'D')

insert into tianyc01 values(2,5,'E')

insert into tianyc01 values(2,6,'F')

select * from tianyc01

h l v

1 1 a

1 2 b

1 3 c

1 4 d

1 5 e

1 6 f

2 1 A

2 2 B

2 3 C

2 4 D

2 5 E

2 6 F

②行转列

select h,

split_part(v,',',instr(l,'1')),

split_part(v,',',instr(l,'2')),

split_part(v,',',instr(l,'3')),

split_part(v,',',instr(l,'4')),

split_part(v,',',instr(l,'5')),

split_part(v,',',instr(l,'6'))

from(

select h,WM_CONCAT('',l) as l,WM_CONCAT(',',v) as v from tianyc01

group by h

) x

h _c3 _c4 _c5 _c6 _c7 _c8

------------------------------

1 a b c d e f

2  A B C D E F

Split函数

描述

返回一个下标从零开始的一维数组,它包含指定数目的子字符串。

语法

Split(expression[, delimiter[, count[, compare]]])

Split函数语法有如下几部分:

部分 描述

expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。

delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的expression字符串。

count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。

compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。

设置值

compare参数的设置值如下:

常数 值 描述

vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。

vbBinaryCompare 0 执行二进制比较。

vbTextCompare 1 执行文字比较。

vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。

示例

下面的示例演示如何在字符串的空格处拆分该字符串。

Dim TestString As String = "Look at these!"

' 返回的数组包含 "Look", "at", and "these!".

Dim TestArray() As String = Split(TestString)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6765672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存