Rumah pangkalan data tutorial mysql Oracle中提取主键拼字符串的问题

Oracle中提取主键拼字符串的问题

Jun 07, 2016 pm 05:08 PM

最近在做一个数据库是用的Oracle的项目,也是我的第一个项目模块,感觉很蛋疼,但是有很多收获。下面就是我遇到的问题和解决方法

最近在做一个数据库是用的Oracle的项目,也是我的第一个项目模块,感觉很蛋疼,但是有很多收获。下面就是我遇到的问题和解决方法,我是菜鸟级,希望高手如果发现错误,请指出。

比如:

创建的Oracle的表,主键描述:“四位树形代码”

比如用户表中:

表名:USER

表记录:

USER_ID CHAR(15) NOT NULL,

USER_NAME VARCHAR2(20) NOT NULL,

USER_EMAIL VARCHAR2(30),

PRIMARY KEY(USER_ID)

 

先插入一条数据:

INSERT INTO USER VALUES('0001', '张三', '123456789@');

 

现在我要查询:

SELECT * FROM USER;

 

执行的结果:

USER_ID                             USER_NAME                                  USER_EMAIL

   0001                                          张三                                       123456789@

 

如果我们从Oracle中只查询出USER_ID

SELECT USER_ID

FROM USER;

 

执行的结果:

USER_ID

   0001

 

但是在我们拼字符串sql的时候,比如我们要联表查询,USER_ID在另外一个表中是一个内联的字段,我们就要在USER_ID内联的表中使用到。

比如在“学生表”中:

表名:STUDENT

表记录:

STUDENT_ID CHAR(15) NOT NULL,

USER_ID CHAR(15) NOT NULL,

STUDENT_NAME VARCHAR2(20) NOT NULL,

PRIMARY KEY(STUDENT_ID)

 

插入一条记录:

INSERT INTO STUDENT VALUES('0001','0001' , '学生张三');

查询(这里的查询,我要信息中给学生分配邮箱信息)

SELECT S.STUDENT_NAME, U.USER_MAIL

FROM STUDENT S, USER U

WHERE S.USER_ID=U.USER_ID;

 

执行结果:

STUDENT_NAME                                               USERMAIL

     学生张三                                                 123456789@163..com

重点:

在数据库中,直接这样用肯定是对的,如果我们在java文件中使用字符串sql进行拼字符串就会出现问题了。

使用JDBC连接,执行SQL,返回查询结果,这里省略JDBC的处理

假设使用public List baseListSql(String sql); 方法处理。

拼sql的方法:

(1)

//这一句中user_name是传入的参数,根据传入的user的名字找到user_id的值

String usr_id = this.baseListSql("SELECT USER_ID FROM USER WHERE USER_NAME='"+user_name+"' ");  

 //根据user_id关联USER表中的USER_MAIL

String sql = "SELECT S.STUDENT_NAME, U.USER_MAIL FROM STUDENT S, USER U WHERE S.USER_ID='"+user_id+"'";

//通过JDBC执行后返回List

List students = this.baseListSql(sql);

//返回数据

return  students;

分析:

直接看的时候,还认为这样的sql逻辑是对的,字符串也拼对了的,但是是不能执行成功的,当然你可以使用System.out.println(sql);和Debug的模式进行调试,但是我这里记下,不想每次都因为这个错误去调试半天。

这里USER_ID是CHAR类型,长度是15 , 我们使用“四位树形代码”输入的数据是'0001'这样当他查出来是'0001           ',后面全部都是空格,所以在下面拼的sql中传入的值就不正确了,,所以需要一定的处理,处理如方案(2)

(2)

//这一句中user_name是传入的参数,根据传入的user的名字找到user_id的值

String usr_id = this.baseListSql("SELECT USER_ID FROM USER WHERE USER_NAME='"+user_name+"' ");  

//首先使用String的trim()方法去除所有空格,这样就正确了

user_id = user_id.trim();

 //根据user_id关联USER表中的USER_MAIL

String sql = "SELECT S.STUDENT_NAME, U.USER_MAIL FROM STUDENT S, USER U WHERE S.USER_ID='"+user_id+"'";

//通过JDBC执行后返回List

List students = this.baseListSql(sql);

//返回数据

return  students;

举例中可能会有错误,希望发现错误指出一下。
这样就可以执行成功了!找的时候没注意,幸苦死了,记录一下pass一下它!

下次有时间继续记录遇到的问题,哈哈!奖励一下自己!遇到得多解决得多,到时候一定要成为高手。

linux

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Mar 21, 2025 pm 06:28 PM

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Bagaimana anda mengendalikan dataset besar di MySQL? Bagaimana anda mengendalikan dataset besar di MySQL? Mar 21, 2025 pm 12:15 PM

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.

Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Mar 19, 2025 pm 03:52 PM

Artikel ini membincangkan jadual menjatuhkan di MySQL menggunakan pernyataan Jadual Drop, menekankan langkah berjaga -jaga dan risiko. Ia menyoroti bahawa tindakan itu tidak dapat dipulihkan tanpa sandaran, memperincikan kaedah pemulihan dan bahaya persekitaran pengeluaran yang berpotensi.

Terangkan keupayaan carian teks penuh InnoDB. Terangkan keupayaan carian teks penuh InnoDB. Apr 02, 2025 pm 06:09 PM

Keupayaan carian teks penuh InnoDB sangat kuat, yang dapat meningkatkan kecekapan pertanyaan pangkalan data dan keupayaan untuk memproses sejumlah besar data teks. 1) InnoDB melaksanakan carian teks penuh melalui pengindeksan terbalik, menyokong pertanyaan carian asas dan maju. 2) Gunakan perlawanan dan terhadap kata kunci untuk mencari, menyokong mod boolean dan carian frasa. 3) Kaedah pengoptimuman termasuk menggunakan teknologi segmentasi perkataan, membina semula indeks dan menyesuaikan saiz cache untuk meningkatkan prestasi dan ketepatan.

Bagaimana anda mewakili hubungan menggunakan kunci asing? Bagaimana anda mewakili hubungan menggunakan kunci asing? Mar 19, 2025 pm 03:48 PM

Artikel membincangkan menggunakan kunci asing untuk mewakili hubungan dalam pangkalan data, memberi tumpuan kepada amalan terbaik, integriti data, dan perangkap umum untuk dielakkan.

Bagaimana anda membuat indeks pada lajur JSON? Bagaimana anda membuat indeks pada lajur JSON? Mar 21, 2025 pm 12:13 PM

Artikel ini membincangkan membuat indeks pada lajur JSON dalam pelbagai pangkalan data seperti PostgreSQL, MySQL, dan MongoDB untuk meningkatkan prestasi pertanyaan. Ia menerangkan sintaks dan faedah mengindeks laluan JSON tertentu, dan menyenaraikan sistem pangkalan data yang disokong.

See all articles