精华内容
下载资源
问答
  • 问题描述:在数据库表关系中,可能会遇到,A表中的b字段存储了B表id;由于A表与B表是一对多的关系,所以为了方便,A表b字段存储B表多个id,并以逗号(,)等字符分隔。 如果关联查询A中对应B表的内容行,一般会用...
    1. 问题描述:在数据库表关系中,可能会遇到,A表中的b字段存储了B表id;由于A表与B表是一对多的关系,所以为了方便,A表b字段存储B表多个id,并以逗号(,)等字符分隔。
    2. 如果关联查询A中对应B表的内容行,一般会用select * from B id in(…);但是由于1中描述的问题,B id不能直接in,需要将A表b字段进行转换,即单行数据转多行数据,以适用于in的查询语法。
    3. 解决语法:基本语法:
    SELECT REGEXP_SUBSTR ('1,2,3', '[^,]+', 1,rownum)
    from dual connect by rownum<=LENGTH ('1,2,3') - LENGTH (regexp_replace('1,2,3', ',', ''))+1;
    
    select selectitem_nm,matter_id from fwjc_matter_selectitem where matter_id in (
    SELECT REGEXP_SUBSTR ((MATTER_ID), '[^,]+', 1,rownum) from
    (SELECT  matter_id from Fwjc_Evaluate_Project where PROJECT_ID=#para(projectId) and project_std = '1'
    and end_date between #para(startTime) and
        #para(endTime)
    and begin_date between #para(startTime) and
        #para(endTime)
        and update_user=#para(userCode))
     connect by rownum<=LENGTH (MATTER_ID)- LENGTH (regexp_replace(MATTER_ID, ',', ''))+1
    )
    
    1. 参考示例:https://blog.csdn.net/sofeien/article/details/80534557
    展开全文
  • SELECT DISTINCT REGEXP_SUBSTR (字段名,'[^,]+',1,LEVEL)FROM 表名...例如:表SYS_FLOW_SP_USER 中字段USERS为用户id逗号分隔,管理用户表SYS_LOGIN,查询所有转列后的数据 SELECT L.USER_NAME from ( SELECT DIS...

    SELECT DISTINCT REGEXP_SUBSTR (字段名,'[^,]+',1,LEVEL) FROM 表名 CONNECT BY REGEXP_SUBSTR (字段名,'[^,]+',1,LEVEL) IS NOT NULL

    注意:如果字段中有重复值则会查出null数据,需要在外层处理

    例如:表 SYS_FLOW_SP_USER  中字段USERS为用户id逗号分隔,管理用户表SYS_LOGIN,查询所有转列后的数据

    SELECT L.USER_NAME from ( SELECT DISTINCT REGEXP_SUBSTR (USERS,'[^,]+',1,LEVEL) as userId
      FROM SYS_FLOW_SP_USER  
     CONNECT BY REGEXP_SUBSTR (USERS,'[^,]+',1,LEVEL) IS NOT NULL) A LEFT JOIN SYS_LOGIN L on A.userId=L.USER_ID where A.userId is not null

    展开全文
  • java字段与数据库字段映射

    千次阅读 2016-05-27 16:26:04
    * 将以下划线分隔数据库字段转换为驼峰风格的字符串 *  * @param columnName * @return */ public static String changeColumnToFieldName(String columnName) { String[] array = columnNa
    public class DBFieldFmtHepler {

    /**
    * 将以下划线分隔的数据库字段转换为驼峰风格的字符串

    * @param columnName
    * @return
    */
    public static String changeColumnToFieldName(String columnName) {
    String[] array = columnName.split("_");
    StringBuffer sb = null;
    for (String cn : array) {
    cn = cn.toLowerCase();
    if (sb == null) {
    sb = new StringBuffer(cn);
    continue;
    }
    sb.append(cn.substring(0, 1).toUpperCase()).append(cn.substring(1));
    }
    return sb.toString();
    }


    /**
    * 将驼峰风格的字符串转换为以下划线分隔的数据库字段
    * @param fieldName
    * @return
    */
    public static String changeFieldToColumnName(String fieldName) {
    if(fieldName==null){
    return null;
    }
    StringBuffer columnName = new StringBuffer();
    int length = fieldName.length();
    for(int i=0;i<length;i++){
    char c = fieldName.charAt(i);
    if('A'<=c && 'Z'>=c){
    columnName.append("_").append((char)(c+32));
    }else{
    columnName.append(fieldName.charAt(i));
    }
    }
    return columnName.toString();
    }

    public static void main(String[] args) {
    System.out.println(changeFieldToColumnName("createTime"));
    }

    }
    展开全文
  • Mybatis确实非常的方便,使用起来也...数据库字段和实体类字段有对应关系,这里的对应关系就是数据库字段全为大写字母且单词之间用_分隔,实体类的属性名采用小驼峰式命名,一定要保证对应,例如数据库中的USER_I...

    Mybatis确实非常的方便,使用起来也十分的舒服,但是在使用的时候难免就会遇到一些问题,比如Java中的实体类字段名和数据库表中的字段不一致时,执行结果就会出现意外。

    有如下两种类型:

    1.数据库字段名和实体类字段名存在一定关系

    数据库字段和实体类字段有对应关系,这里的对应关系就是数据库字段全为大写字母且单词之间用_分隔,实体类的属性名采用小驼峰式命名,一定要保证对应,例如数据库中的USER_ID对应实体类中的·userId字段。

    类似于如下:
    在这里插入图片描述
    这种不对应的情况,Mybatis提供了一个自动驼峰命名规则的设置,但是默认是关闭的,所以当我们没有设置的时候,这样也是对应不上的。我们就需要在Mybatis的配置文件中添加如下配置:

    <settings>
        <!--  开启自动驼峰命名规则映射  -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    

    这里需要注意的就是settings标签的位置了,需要按照以下顺序排列,具体可参考博主的另一篇文章
    在这里插入图片描述

    当我们开启了自动驼峰命名规则之后,这种情况就会得以解决。

    2.数据库字段名与实体类字段名“毫无关联”

    在这里插入图片描述
    这里的毫无关联是指字段名字不对应,而且也不存在上面的第一种情况。这种情况下,我们开启自动驼峰命名规则就不起任何作用了。

    对于这种情况我们有两种解决方案:

    2.1 在编写SQL语句的时候为字段起别名

    举例如下:

    <select id="getUserList" resultType="User">
        select USER_ID as id,USER_NAME as name,USER_PASSWORD as password from user2;
    </select>
    

    但是这种解决方式还是有些不妥,万一我们的数据库字段很多,我们编写的sql就会很长,看起来就十分的冗余,于是Mybatis也有一种解决方案。

    2.2 ResultMap结果集映射

    举例如下:

    <!--  自定义一个结果集映射  -->
    <!--  id:区分该自定义结果集的唯一指定id  -->
    <!--  type:指定需要映射的JavaBean类型  -->
    <resultMap id="userMap" type="User">
        <!--  这里的id标签标示它是主键  -->
        <!--  column:数据库表中的字段名  -->
        <!--  property:指定JavaBean中的属性  -->
        <id column="USER_ID" property="id" />
        
        <!--  这里的result标签标示它是普通字段,其属性值与上述一致  -->
        <result column="USER_NAME" property="name" />
        <result column="USER_PASSWORD" property="password" />
    </resultMap>
    
    <!--  由于我们自定义了结果集的映射,所以我们这里需要使用resultMap来指定结果集应该按照我们自定义的结果集来产生映射行为  -->
    <select id="getUserList" resultMap="userMap">
        select USER_ID,USER_NAME,USER_PASSWORD from user2;
    </select>
    

    当我们这样设置之后,问题也会得到对应的解决。

    博主更推荐使用这种结果集映射的方式来处理数据库字段与实体类字段不一致的情况。

    展开全文
  • 数据库设计字段时,有时候字段的值是逗号分隔的情况,如"客户"表中有个“客户经营品牌”字段,值是品牌表的“id”如:“1,4,6,12,18,23”。代表客户经营着多个品牌,当我们查询时,容易出现问题,比如我们想查询出...
  • 总结的几种方案 1.代码中用for循环拼接sql,类似的用CHARINDEX -- or连接 Name like '%福田%' or RegionName like '%南山% -- ...使用mongodb这种方便搜索的文档型数据库 5.STRING_SPLIT(sqlserver) 6.给点其他意见....
  • 数据库字段 驼峰风格 互相转换

    千次阅读 2017-07-18 19:57:21
    * 将以下划线分隔数据库字段转换为驼峰风格的字符串 * @param fieldName * @return */ public static String changeColumnToFieldName(String columnName) { String[] array = columnName.split("_");
  • mybaitis 交集
  • 使用笛卡尔积完成数据库字段逗号分隔字符串数据的拆分 SELECT a.`answer_result_id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a.`answer`,',',b.help_topic_id+1),',',-1)answer,single_subject_score,subject_id FROM ...
  • 表 1 ID 字段A 1 a,b,c 2 c,b 得出的结果要 数量 ID 3 1 2 2 现在用了个函数可以求一个的数量 请问怎么写这种全局的?
  • <p>I have this script: <p>UPLOAD MULTIPLE FILES - PIECE OF CODE <pre><code>foreach ($_FILES['files']['name'] as $f => $name) { ... if ($_FILES['files']['error'][$f] == 0) { ...
  • SQL Server 数据库千位分隔符 3位逗号分隔显示金额 大金额显示增加可读性问题(每千位一个逗号) 我们在进行报表开发,或者业务数据提取的业务任务时,面对较大金额时,为了增加可读性,一般都会 被要求金额字段或较...
  • MyBatis数据库字段和实体对象属性名不一致的解决方案1. 开启驼峰转换2. 在SQL查询语句中使用别名来适配3. 自定义ResultMap 数据库和对象的属性名不一致是很常见的问题,这个时候依从表字段到对象属性名的按名称匹配...
  • csv文件导入到数据库过程中,字段中有分隔符的情况应该怎么处理呢?维基百科上说应该用双引号包裹,但这样并没有效果。我用的是sql server2012,请大神指教。
  • 众所周知,java中变量的命名使用的是驼峰命名法,但是数据库字段要用下划线分隔。因为这个问题,我的代码返回对象一直是null。 经过将近8小时的奋斗,我终于找到了解决方法,什么更改配置文件,什么写xml都是laji,...
  • Mysql函数group_concat、find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查询出的原料结果显示为原料名称,...
  • hive 数据库操作 创建数据库 create database if not exists myhive; # 使用数据库 use myhive; 说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的 <name>hive.metastore.warehouse.dir&...
  • 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查询出的原料结果显示为原料名称,并以逗号分隔。可通过函数group_concat、find_in_set实现 ...
  • MySQL数据库字段含逗号的数据,分隔成多条数据

    千次阅读 多人点赞 2017-05-31 16:58:07
    数据库表的字段按逗号进行切割,分成多条数据, 主要为了解决同一个列中存储了多个属性值的问题。
  • MySQL数据库select语句取出指定字段并按照逗号分隔 正常查询结果 select id from bg_cust_info where for_short="金马衡器"; GROUP_CONCAT函数后查询结果 select GROUP_CONCAT(id) as ids from bg_cust_info where...
  • 在我们实际开发中,我的数据库列名规范大都是要求每个单词用下划线分隔,而JAVA实体则是用驼峰命名法,于是使用MyBatis自动映射,或直接在配置文件中开启驼峰命名方式。 2.例如 实体对象属性如下 public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,203
精华内容 481
关键字:

数据库字段分隔