我有一个系统,需要在其中获取存储在名为tg800的SMS网关中的所有消息。
我正在使用运行在tomcat中的Spring MVC进行开发。
我将所有收到的消息存储到一个名为
的表中SMS_MESSAGES
CREATE TABLE CWMS_USER.SMS_MESSAGES
(
MESSAGE_ID VARCHAR2(4000 CHAR),
SENDER VARCHAR2(4000 CHAR),
SMSC VARCHAR2(13 CHAR),
PORT_ID VARCHAR2(1 CHAR),
CONTENT VARCHAR2(4000 CHAR),
RECEIVE_TIME VARCHAR2(30 CHAR),
HAS_READ VARCHAR2(3 CHAR),
IS_ASSIGNED_TO_TICKET VARCHAR2(50 CHAR),
ID NUMBER NOT NULL,
MESSAGE_STATUS VARCHAR2(20 CHAR),
TYPE_OF_MESSAGE VARCHAR2(20 CHAR) NOT NULL
)
我将所有已发送的消息存储到一个名为
的表中SMS_REPLY
CREATE TABLE CWMS_USER.SMS_REPLY
(
MESSAGE_ID VARCHAR2(4000 CHAR),
SENDER VARCHAR2(4000 CHAR),
SMSC VARCHAR2(13 CHAR),
PORT_ID VARCHAR2(1 CHAR),
CONTENT VARCHAR2(4000 CHAR),
RECEIVE_TIME VARCHAR2(30 CHAR),
HAS_READ VARCHAR2(3 CHAR),
IS_ASSIGNED_TO_TICKET VARCHAR2(50 CHAR),
ID NUMBER NOT NULL,
MESSAGE_STATUS VARCHAR2(20 CHAR),
TYPE_OF_MESSAGE VARCHAR2(20 CHAR) NOT NULL
)
打开消息收发应用程序时,您会看到电话号码,最新消息,收到日期等。按日期排序并按编号分组。这就是我需要看到的。
我的问题是TG800的数字存储方式不同。
示例: 在SMS_MESSAGES 这个数字是+639183478372
在SMS_REPLY中 这个数字是639183478372
查询未将这两个数字视为一个,因为SMS_MESSAGES中的数字带有加号。
我无法控制TG800如何存储该号码。
有什么办法可以将其视为一体?
SELECT * FROM((SELECT * FROM SMS_MESSAGES
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_MESSAGES.SENDER = foo.CONTACT_NO)
UNION
(SELECT * FROM SMS_REPLY
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_REPLY.SENDER = foo.CONTACT_NO)) WHERE (SENDER, RECEIVE_TIME)
IN (SELECT SENDER, MAX(RECEIVE_TIME) FROM ((SELECT * FROM SMS_MESSAGES
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_MESSAGES.SENDER = foo.CONTACT_NO)
UNION
(SELECT * FROM SMS_REPLY
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_REPLY.SENDER = foo.CONTACT_NO)) GROUP BY SENDER,PORT_ID) ORDER BY RECEIVE_TIME desc
这是我正在使用的查询,它没有将相同的数字视为一个。
我需要将此设置为一个,因为它们是相同的数字。请帮助我。