如何替换sql字段区分大小写的值

时间:2017-05-13 06:09:22

标签: sql replace case-sensitive

我有一个区分大小写的列。 如何在所有记录中将Shiderel,shPersonel,sHperSonel替换为ShPersonel?

我的专栏数据是:

1- SHpersonel = 12 And Password= Ayuy122
2- ShpeRsonel = 10 And Password= jkjIUD122
3- ShPersonel = 08 And Password= Kjjam
...

3 个答案:

答案 0 :(得分:1)

您可以使用许多DBMS支持的LOWER(或UPPER)来查找不区分大小写的值并更新:

update your_table
set col = 'ShPersonel'
where lower(col) = 'shpersonel';

编辑:

进一步澄清说明上述数据存储在一个列中 - 这不是应该如何存储的。

您应该将数据存储在单独的列中,然后查找进一步的规范化以删除不需要的依赖项。

答案 1 :(得分:0)

        class LeaveManagerFragment extends Fragment implements DatePickerDialog.OnDateSetListener



      editText_toDate.setOnClickListener(new View.OnClickListener() {
                @RequiresApi(api = Build.VERSION_CODES.N)
                @Override
                public void onClick(View v) {
                    clickedEditText = 2;
                    DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), date, myCalendar
                            .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                            myCalendar.get(Calendar.DAY_OF_MONTH));
                    datePickerDialog.setOnDateSetListener(getContext());
                    datePickerDialog.show();
                }
            });

 @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        System.out.println("Date set");
    }

答案 2 :(得分:0)

您没有说出您正在使用的DBMS。如果是SQL-Server,以下内容适用于您:

update MyTable
set TheData =
    concat(
           left(TheData,charindex('shpersonel',lower(t.TheData))-1),
           'ShPersonel',
           right(t.TheData,len(t.TheData) - charindex('shpersonel',lower(t.TheData)) - len('ShPersonel'))
           )           
from MyTable t
where
charindex('shpersonel',lower(t.TheData))>0

对于其他DBMS,您需要将charindex替换为DBMS的等价物。例如,Oracle和MySQL使用InStr(它的参数需要相反的顺序)。