我可以在字符串连接中使用条件三元运算符吗?
Can I use the conditional ternary operator into a string concatenation?
我有以下疑问:我能否以某种方式将条件三元运算符用于字符串连接?
我正在尝试做这样的事情:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" +
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
这意味着在第一个 String trunk 我想连接由以下评估的值:
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
但是 Eclipse 给我签了这个错误:
Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String
为什么?怎么了?我该如何解决这个问题?
首先,您应该将三元条件放在方括号内:
(qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null")
此外,您应该验证 qsTirPF.getPolizzaid() 是否返回字符串
您需要括号:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" + (qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null");
您可以使用括号告诉编译器您想要与条件三元运算符的结果连接:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ ...
+ ((getPolizzaid() != null)? qsTirPF.getPolizzaid() : "null");
这应该有效。
PS :您可以使用 StringBuilder 来构建查询,而不是使用 + 号。效率更高。
我有以下疑问:我能否以某种方式将条件三元运算符用于字符串连接?
我正在尝试做这样的事情:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" +
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
这意味着在第一个 String trunk 我想连接由以下评估的值:
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
但是 Eclipse 给我签了这个错误:
Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String
为什么?怎么了?我该如何解决这个问题?
首先,您应该将三元条件放在方括号内:
(qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null")
此外,您应该验证 qsTirPF.getPolizzaid() 是否返回字符串
您需要括号:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" + (qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null");
您可以使用括号告诉编译器您想要与条件三元运算符的结果连接:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ ...
+ ((getPolizzaid() != null)? qsTirPF.getPolizzaid() : "null");
这应该有效。
PS :您可以使用 StringBuilder 来构建查询,而不是使用 + 号。效率更高。